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" } ] }