1回のリクエストで複数のフィールドを更新したいので、mongo dbに大きな問題があります。
私のJsonは:
デシベル。テスト。findOne();
{
"_id" : ObjectId("51e7dd16d2f8db27b56ea282"),
"広告" : "noc2",
「リスト」:{
"p45": {
"id": "p45",
"date" : ISODate("2014-01-01T12:18:30.568Z"),
「値3」: 21、
「値1」: 100、
「値2」: 489
}、
"p6": {
「ID」:「p6」
"date" : ISODate("2013-07-18T12:18:30.568Z"),
「値3」: 21、
「値1」: 100、
「値2」: 489
}、
"p4578": {
「ID」:「4578」
"date" : ISODate("2013-07-18T12:18:30.568Z"),
「値3」: 21、
「値1」: 100、
「値2」: 489
}
}
}
createdDate フィールドが存在しないか null の場合、すべての要素 list に対してフィールド createdDate を作成します。
リクエストの例、コード Java で upsert true を使用して 1 つのフィールドを更新するために使用するもの:
db.people.update({"advertiser":"noc2","list.4578.createdDate":{$exists:false}},{$set:{"list.p4578.createdDate":"08/08/08"}});
list.4578 が変数に置き換えられている Java を試してみましたが、フィールドが多すぎて長すぎます。100 個のフィールドがある場合、100 個のリクエストを実行します。
見て :
public void createdFirstDateField(MongoAccess mongo, String ad,HashMap<String,Object> hfirstDate){
BasicDBObject searchQuery = new BasicDBObject();
Iterator <String> it = hfirstDate.keySet().iterator();
String key="";
while (it.hasNext()){
key=it.next();
searchQuery.append("ad", ad).append(key, new BasicDBObject("$exists", false));
//System.out.println(key);
BasicDBObject doc = new BasicDBObject ();
doc.append("$set",new BasicDBObject(key,new Date()));
mongo.insert(searchQuery, doc); // update with upsert true
}
}
ありがとう。