modify array element's value with Java MongoDB driver -


i want modify array element using java mongodb driver. able insert new pair array, can't modify value corresponding particular key.

how can increase a 2 in dummy array document

{ "_id" : objectid("57a87614d03a435e4be44bb9"), "dummy" : [ { "a" : 1 }, { "b" : 5 } ] } 

using java mongodb driver?

here i've tried

basicdbobject query = new basicdbobject(); query.put("_id",doc_id_here);  basicdbobject incvalue = new basicdbobject("dummy.$.a", 1); basicdbobject intmodifier = new basicdbobject("$inc", incvalue);  coll.update(query, intmodifier, false, false, writeconcern.safe); 

your query in mongo shell

db.collection.update(    { "_id": objectid("57a87614d03a435e4be44bb9") },    { $inc: { "dummy.$.a": 1 } }  ); 

will result in error

the positional operator did not find match needed query. unexpanded update: dummy.$.a

because in order use positional $ operator dummy array need set condition on array in query

db.collection.update(    { "_id": objectid("57a87614d03a435e4be44bb9"), "dummy.a": { $exists: true } },    { $inc: { "dummy.$.a": 1 } }  ); 

and increment a expect.

with java mongodb driver be

basicdbobject query = new basicdbobject(); query.put("_id", new objectid("57a87614d03a435e4be44bb9")); query.put("dummy.a", new basicdbobject("$exists", true)); basicdbobject incvalue = new basicdbobject("dummy.$.a", 1); basicdbobject intmodifier = new basicdbobject("$inc", incvalue);  coll.update(query, intmodifier, false, false, writeconcern.safe); 

advice: before trying construct query java mongodb driver first try if works in mongo shell.


Comments