删除嵌套文档中的字段

时间:2019-02-09 09:27:21

标签: mongodb mongodb-query

我正在尝试删除“ _types”字段,该字段是所有文档(包括集合中的其他嵌套文档)中的数组。我研究发现了几篇文章提出了解决方案的建议,并且我都尝试了全部。全部结果都匹配,但没有修改(“ nMatched”:1,nModified:0)。

示例文档:

{
  _cls: foo,
  data_servers: [
    {
      name: bar,
      _types: [baz, qux]
    }
  ]
}

我想删除名为_types的数组,我不在乎其中的内容,只是希望字段消失。假设它在一个名为test的集合中。

我尝试过:

* db.test.update({}, {$unset: {"_types":1}}, multi=true)
* db.test.update({}, {$unset: {"data_servers._types": ""}})
* db.test.update({}, {$unset: {"data_servers.$._types: ""}})

所有这些都导致匹配但没有修改:

WriteResult{{"nMatched": 1, "nUpserted": 1, "nModified": 1})

有人可以告诉我我在做什么错吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

这应该有效

db.test.update( 
 {}, 
 {$unset:{"data_servers._types":1}}, 
 false,true 
)

也许您的代码存在问题,如果您要传递更新选项,则该对象应该是对象

db.test.update(
 {},
 {$unset:{"data_servers._types":1}},
 {multi:true}
)

References [Update][1] and [$unset][2]


  [1]: https://docs.mongodb.com/manual/reference/method/db.collection.update/#db-collection-update
  [2]: https://docs.mongodb.com/manual/reference/operator/update/unset/