我正在尝试删除“ _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})
有人可以告诉我我在做什么错吗? 谢谢。
答案 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/