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
}
}
ありがとう。