首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从MongoDB文档中完全删除字段?

如何从MongoDB文档中完全删除字段?
EN

Stack Overflow用户
提问于 2011-07-28 06:17:51
回答 15查看 317.4K关注 0票数 392
代码语言:javascript
复制
{ 
    name: 'book',
    tags: {
        words: ['abc','123'],
        lat: 33,
        long: 22
    }
}

假设这是一个文档。如何删除“words“完全来自此集合中的所有文档?我希望所有文档都没有”words":

代码语言:javascript
复制
{ 
     name: 'book',
     tags: {
         lat: 33,
         long: 22
     }
}
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-07-28 06:32:28

试试这个:如果你的集合是'example‘

代码语言:javascript
复制
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/

示例:

代码语言:javascript
复制
db.example.update({}, {$unset: {words:1}} , {multi: true});
票数 663
EN

Stack Overflow用户

发布于 2013-11-10 15:31:09

一开始,我不明白为什么这个问题有赏金(我认为这个问题有一个很好的答案,没有什么可补充的),但后来我注意到,被接受并获得15次好评的答案实际上是错误的!

是的,你必须使用$unset运算符,但此unset将删除集合的文档中不存在的单词key。所以基本上它什么也做不了。

因此,您需要告诉Mongo查看文档标记,然后使用点符号..。所以正确的查询是。

代码语言:javascript
复制
db.example.update(
  {},
  { $unset: {'tags.words':1}},
  false, true
)

为了完整起见,我将参考另一种方式,这要糟糕得多,但通过这种方式,您可以使用任何自定义代码更改字段(即使基于本文中的另一个字段)。

票数 192
EN

Stack Overflow用户

发布于 2017-10-16 21:41:33

代码语言:javascript
复制
db.example.updateMany({},{"$unset":{"tags.words":1}})

我们还可以使用它来更新多个文档。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6851933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档