我有一份文件:
{ "a" : 9, "b" : [ { "c" : "x", "d" : 8, "k" : 1 }, { "c" : "y", "d" : 2, "k" : 1 } ], "e" : [ { "f" : "u", "g" : 16, "q" : 10 }, { "f" : "v", "g" : 10, "q" : 11 } ] }
现在我想要包括a,b.d(其中b.c =" y"和b.k = 1)和例如(其中e.f =" u"和e.q = 10)。所以我写了更新命令:
db.foo.update({b: {$elemMatch: {c: "y", k: 1}}, e: {$elemMatch: {f: "u", q: 10}}}, {$inc: {a: 1, "b.$.d": 1, "e.$.g": 1}})
我的预期结果:
{ "a" : 10, "b" : [ { "c" : "x", "d" : 8, "k" : 1 }, { "c" : "y", "d" : 3, "k" : 1 } ], "e" : [ { "f" : "u", "g" : 17, "q" : 10 }, { "f" : "v", "g" : 10, "q" : 11 } ] }
但真正的结果是:
{ "a" : 10, "b" : [ { "c" : "x", "d" : 9, "k" : 1 }, { "c" : "y", "d" : 2, "k" : 1 } ], "e" : [ { "f" : "u", "g" : 17, "q" : 10 }, { "f" : "v", "g" : 10, "q" : 11 } ] }
b.d增加,其中b.c =" x"和b.k = 1。这是错的。
如何更正我的更新命令? (mongodb 2.6.3版)