在MongoDB 2.6之前,没有官方功能来从数组文档中$unset
字段。
注意
- $ unset不适用于数组
- $ pull用于删除整个记录,而不是特定字段。
1.数组文件
在本文中,我们将向您展示如何从数组下面删除字段“ countryName ”。
> db.hosting.findOne();
{
"_id" : 39,
"domain" : "mkyong.com",
"countryStat" : [
{
"countryCode" : "us",
"countryName" : "United States",
"count" : 2170
},
{
"countryCode" : "il",
"countryName" : "Israel",
"count" : 22
},
]
}
2.从数组文档中删除字段
要从数组中删除字段,您需要编写如下脚本:
db.hosting.find({_id: 39 }).forEach(function(doc) {
var countries = doc.countryStat;
for(var i = 0; i < countries.length; ++i) {
var x = countries[i];
delete (x["countryName"]);
}
db.hosting.save(doc);
});
输出量
> db.hosting.findOne();
{
"_id" : 39,
"domain" : "mkyong.com",
"countryStat" : [
{
"countryCode" : "us",
"count" : 2170
},
{
"countryCode" : "il",
"count" : 22
},
]
}
参考文献
翻译自: https://mkyong.com/mongodb/mongodb-remove-a-field-from-array-documents/