{ 
    name: 'book',
    tags: {
        words: ['abc','123'],
        lat: 33,
        long: 22
    }
}

假设这是一个文档。我如何从这个集合中的所有文档中完全删除“单词”?我希望所有的文件都没有“文字”:

 { 
     name: 'book',
     tags: {
         lat: 33,
         long: 22
     }
}

当前回答

试试这个:如果你的收藏是“榜样”

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});

其他回答

删除或删除MongoDB中的字段

单次记录 db.getCollection(“用户数据”)。更新({},{$unset: {pi: 1}}) 多重记录 db.getCollection(“用户数据”)。更新({},{$unset: {pi: 1}}, {multi: true})

默认情况下,update()方法更新单个文档。设置“多参数”以更新符合查询条件的所有文档。

在3.6版更改。 语法:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ]
   }
)

例子:

db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})

在你的例子中:

db.getCollection('products').update({},{$unset: {'tags.words' :1}},  {multi: true})

因为我一直在寻找使用蒙古引擎删除字段的方法时找到这个页面,我猜在这里发布蒙古引擎的方式也可能有帮助:

Example.objects.all().update(unset__tags__words=1)

{ 名称:“书”, 标签:{ 词:[' abc ', ' 123 '), 纬度:33岁 长:22 } }

Ans:

db.tablename.remove ({tags.words: [' abc ', ' 123 ']})

PyMongo (Python mongo)的解决方案:

db.example.update({}, {'$unset': {'tags.words':1}}, multi=True);