{
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
假设这是一个文档。我如何从这个集合中的所有文档中完全删除“单词”?我希望所有的文件都没有“文字”:
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
{
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
假设这是一个文档。我如何从这个集合中的所有文档中完全删除“单词”?我希望所有的文件都没有“文字”:
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
当前回答
PyMongo (Python mongo)的解决方案:
db.example.update({}, {'$unset': {'tags.words':1}}, multi=True);
其他回答
{ 名称:“书”, 标签:{ 词:[' abc ', ' 123 '), 纬度:33岁 长:22 } }
Ans:
db.tablename.remove ({tags.words: [' abc ', ' 123 ']})
值得一提的是,如果你使用Typegoose/Mongoose,你的字段需要在你的模型中声明,否则$unset将默默失败。
在重构数据库后,这让我没有意识到。多余的字段不再在我的模型中,我正在运行$unset,但什么也没有发生。
因此,如果你正在进行一些重构,请确保在从模型中删除冗余字段之前将其$unset。
在mongoDB shell中,这段代码可能会有帮助:
db.collection.update({}, {$unset: {fieldname: ""}} )
PyMongo (Python mongo)的解决方案:
db.example.update({}, {'$unset': {'tags.words':1}}, multi=True);
db.collection.updateMany({}, {$unset: {"fieldName": ""}})
updateMany要求每个文档都有一个匹配条件,因为我们传递的是{},它总是true。第二个参数使用$unset操作符删除每个文档中的必需字段。