嵌套对象中的MongoDB多次更新不起作用

时间:2013-09-30 21:21:21

标签: mongodb

我正在尝试对数组中对象的字段进行多次更新。结构如下:

{
rs:[
  {uid:"123", ufc:"bla"},
  {uid:"123", ufc:"foo"}, 
  //...
  ]
}

由于某种原因,只更新了第一个字段。我读过我必须使用multi:true来解决这个问题,但它仍然是一样的。

我试过了:

db.mycollection.update({"rs.uid": "123"},
                  {$set: {"rs.$.ufc":"test"}},
                  false, true
                  )

db.mycollection.update({"rs.uid": "123"},
                  {$set: {"rs.$.ufc":"test"}},
                  {multi: true}
                  )

可能与嵌套结构有关?感谢。

1 个答案:

答案 0 :(得分:2)

我认为您遇到了与question

中提到的问题相同的问题

。作为解决方案,要么等待解决以下issue,要么逐个更新数组元素。在您的查询中,multi表示更新多个文档而不是任何数组字段的项目。查询的工作方式如下:更新所有在rs字段中具有uid“123”的项目的文档。

当然作为替代方案,如果可能的话,更改架构的结构,支持rs数组的项目本身就是文档。

希望这有帮助