mongodb增量嵌套数组文档字段

时间:2014-02-04 10:49:56

标签: mongodb

问题:我无法增加嵌套数组文档字段,因为位置运算符$仅指向父数组。

这是我的医生公司:

{
 "_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},{..}] 
            ]
    }

1 个答案:

答案 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}})

然后您将获得预期的结果。