Mongodb 对于$inc更新,如何将序号位置传递到Pymongo中的更新文档中

Mongodb 对于$inc更新,如何将序号位置传递到Pymongo中的更新文档中,mongodb,pymongo,Mongodb,Pymongo,我有一个文档,其中包含一个没有ID的嵌套文档数组 _id: adsjfdsau7Hukad, 'nested':[{ a:'123456',b:'zzzzzzzzz'}, {a:'788123',b:'6yuuuuuu'}, {a:'123456',b:'ooo998uj'}] 我想在已标识文档的指定元素中增加一个新属性“c”。例如: db.collection.update({_id:'adsjfdsau7Hukad'},{$inc:{'nested

我有一个文档,其中包含一个没有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}})
但这似乎不起作用


有什么想法吗?

您需要以编程方式生成密钥:

在外壳中:

var num=4;
var inc={};
inc['nested.'+num+'.c']=1;
update({{u id:'adsjfdsau7Hukad'},{$inc:inc})
在pymongo:

num=4
db.collection.update(
{u id':'adsjfdsau7Hukad'},
{'$inc':{'nested.'+str(num)+'.c':1})

这正是我认为应该起作用的。但我从周日开始尝试了8种方法,但都不管用。我执行了您建议的shell版本,并获得以下信息:
Mon Aug 05 19:46:33.395 JavaScript执行失败:SyntaxError:Unexpected token+
,该编辑对shell有效。Python仍然存在问题,但这可能是因为我更习惯于PHP。