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
Post a Comment