{
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
假设这是一个文档。如何删除“words“完全来自此集合中的所有文档?我希望所有文档都没有”words":
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
发布于 2011-07-28 06:32:28
试试这个:如果你的集合是'example‘
db.example.update({}, {$unset: {words:1}}, false, true);
请参阅以下内容:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset
更新
上面的链接不再包含“$unset”。请务必添加{multi: true}
如果要从集合中的所有文档中删除此字段,则只会从找到匹配的第一个文档中删除该字段。有关更新的文档,请参阅以下内容:https://docs.mongodb.com/manual/reference/operator/update/unset/
示例:
db.example.update({}, {$unset: {words:1}} , {multi: true});
发布于 2013-11-10 15:31:09
一开始,我不明白为什么这个问题有赏金(我认为这个问题有一个很好的答案,没有什么可补充的),但后来我注意到,被接受并获得15次好评的答案实际上是错误的!
是的,你必须使用$unset
运算符,但此unset将删除集合的文档中不存在的单词key。所以基本上它什么也做不了。
因此,您需要告诉Mongo查看文档标记,然后使用点符号..。所以正确的查询是。
db.example.update(
{},
{ $unset: {'tags.words':1}},
false, true
)
为了完整起见,我将参考另一种方式,这要糟糕得多,但通过这种方式,您可以使用任何自定义代码更改字段(即使基于本文中的另一个字段)。
发布于 2017-10-16 21:41:33
db.example.updateMany({},{"$unset":{"tags.words":1}})
我们还可以使用它来更新多个文档。
https://stackoverflow.com/questions/6851933
复制相似问题