MongoDB - Как удалить поле из документа

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