我有一个文档,其中包含没有ID的嵌套文档数组
_id: adsjfdsau7Hukad,
'nested':[{ a:'123456',b:'zzzzzzzzz'},
{a:'788123',b:'6yuuuuuu'},
{a:'123456',b:'ooo998uj'}]
我想在已识别文档的指定元素中增加一个新属性'c'。例如:
db.collection.update({_id:'adsjfdsau7Hukad'},{$inc:{'nested.2.c':1}})
当我可以显式编写元素序数位置标识符时,此方法有效。但是,我需要为元素顺序位置传递一个变量,但是我还没有找到一种方法。我尝试了这个:
var num = 4 ## as example
db.collection.update({_id:'adsjfdsau7Hukad','nested.$': num},{$inc:{'nested.$.c':1}})
但这似乎不起作用。
有任何想法吗?
最佳答案
您需要以编程方式生成 key :
在 shell 中:
var num = 4;
var inc = {};
inc['nested.' + num + '.c'] = 1;
db.collection.update({_id: 'adsjfdsau7Hukad'}, {$inc: inc})
在pymongo中:
num = 4
db.collection.update(
{'_id': 'adsjfdsau7Hukad'},
{'$inc': {'nested.' + str(num) + '.c': 1}})
关于mongodb - 如何将顺序位置传递到Pymongo中的更新文档中以进行$ inc更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18068656/