问题:我无法增加嵌套数组文档字段,因为位置运算符$仅指向父数组。
这是我的医生公司:
{
"_id" : ObjectId(...),
Whol : [ "name" : 'praveen',
credit_note : [{id : 123, amount : 20 },{id: 456 ,amount : 10},{..}]
]
}
我尝试了这个但是没有工作:
db.firm.update({_id: ,'whol.id':,'whol.credit_note.id' : 123},
{$inc : {'whol.credit_note.$.amount': 100}}
)
预期结果
{
"_id" : ObjectId(...),
Whol : [ "name" : 'praveen',
credit_note : [{id : 123, amount : 120 },{id: 456 ,amount : 10},{..}]
]
}
答案 0 :(得分:1)
据我所知,在mongoDB中,您无法使用单个查询更新文档。使用位置运算符$,您只能匹配单级嵌套数组。您必须更新的对象位于第二级。在JIRA中引发了匹配嵌套数组特征的位置运算符。您可以在https://jira.mongodb.org/browse/SERVER-831
投票赞成此功能解决方法是,您必须找到子文档的索引{id:123,amount:20}。使用此索引,您可以使用查询更新文档:
db.firm.update({_id: ,'whol.id':,'whol.credit_note.id' : 123},
{$inc : {'whol.$.credit_note.0.amount': 100}})
然后您将获得预期的结果。