MongoDB - Как удалить поле из документа
В этой статье MongoDB показано, как удалить поле из документа и массива.
1. Удалить поле из документов
Образец документа, и вы хотите удалить поле «affLink».
domain.json
{
"_id" : 1,
"domain" : "example.com",
"affLink" : "abc"
}
Чтобы удалить поле из всех документов, установите{multi: true}, иначе будет удалено только поле первого совпадающего документа.
db.domain.update({},{$unset: {affLink:1}},{multi: true});
Выход
domain.json
{
"_id" : 1,
"domain" : "example.com"
}
2. Удалить поле из массива
До MongoDB 2.6 еще не было официальной функции для удаления поля из массива. Чтобы это исправить, вам нужно написать скрипт:
person.json
{
_id: 1,
name: "example",
addresses: [
{
street: "99 The Rock Street",
city: "Boston",
state: "MA",
zip: "66666"
},
{
street: "88 WWF Street",
city: "Boston",
state: "MA",
zip: "77777"
}
]
}
Зацикливайте документы и удаляйте поле «состояние» из массива одно за другим.
db.person.find({}).forEach(function(doc) {
var address = doc.addresses;
for(var i = 0; i < address.length; ++i) {
var x = address[i];
delete (x["state"]);
}
db.person.save(doc);
});
Выход
person.json
{
_id: 1,
name: "example",
addresses: [
{
street: "99 The Rock Street",
city: "Boston",
zip: "66666"
},
{
street: "88 WWF Street",
city: "Boston",
zip: "77777"
}
]
}