{
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
假设这是一份文件 . 如何删除“ words
" completely from all the documents in this collection? I want all documents to be without " words
”:
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
9 回答
要引用包并删除各种“键”,请尝试此操作
试试这个:如果你的收藏是'例子'
请参考:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset
UPDATE :
以上链接不再涵盖'$unset' ing . 如果要从集合中的所有文档中删除此字段,请务必添加
{multi: true}
;否则,它只会从找到匹配的第一个文档中删除它 . 有关更新的文档,请参阅此https://docs.mongodb.com/manual/reference/operator/update/unset/
例:
在一开始,我不明白为什么这个问题有一个赏金(我认为这个问题有一个很好的答案,没有什么可补充的),但后来我注意到被接受和赞成15次的答案实际上是错误的!
是的,你必须使用$unset operator,但是这个未设置将删除对于集合的文档不存在的单词key . 所以基本上它什么也不做 .
因此,您需要告诉Mongo查看文档标签,然后使用dot notation . 所以正确的查询是 .
仅仅为了完成,我将参考another way of doing it,这更糟糕,但是这样你可以用任何自定义代码更改字段(甚至基于本文档中的另一个字段) .
To remove or delete field in MongoDB
我们也可以使用它来更新多个文档 .
默认情况下,update()方法更新单个文档 . 设置多参数以更新符合查询条件的所有文档 .
版本3.6中已更改 . 句法 :
示例:
在你的例子中:
{name:'book',tags:{words:['abc','123'],lat:33,long:22}}
答:
db.tablename.remove({ 'tags.words':[ 'ABC', '123']})
检查是否存在“单词”,然后从文档中删除
true表示如果匹配则更新多个文档 .
您也可以使用3.4中的项目进行聚合
{$ project:{“tags.words”:0}}