java - Update multiples fields Mongo DB -


i have big problem mongo db because want update multiple fields 1 request.

my json :

      db.test.findone(); {         "_id" : objectid("51e7dd16d2f8db27b56ea282"),         "ad" : "noc2",         "list" : {                 "p45" : {                         "id" : "p45",                         "date" : isodate("2014-01-01t12:18:30.568z"),                         "value3" : 21,                         "value1" : 100,                         "value2" : 489                 },                 "p6" : {                         "id" : "p6"                         "date" : isodate("2013-07-18t12:18:30.568z"),                         "value3" : 21,                         "value1" : 100,                         "value2" : 489                 },                 "p4578" : {                        "id" : "4578"                         "date" : isodate("2013-07-18t12:18:30.568z"),                         "value3" : 21,                         "value1" : 100,                         "value2" : 489                 }         } }  

i want created field createddate elements list , if createddate field doesn't exist or null.

a request example, use update 1 field upsert true in code java :

  db.people.update({"advertiser":"noc2","list.4578.createddate":{$exists:false}},{$set:{"list.p4578.createddate":"08/08/08"}}); 

i tried java list.4578 replaced variable long fields. if have 100 fields, execute 100 requests.

look :

public void createdfirstdatefield(mongoaccess mongo, string ad,hashmap<string,object> hfirstdate){        basicdbobject searchquery = new basicdbobject();       iterator <string> = 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 upsert true       }  } 

thanks.

why don't use update upsert?

db.people.update({"advertiser": "noc2"},                  {$set: {"list.$.createddate": "08/08/08"}},                  {$upsert: true); 

if createddate exists updated, if not inserted.


Comments