MongoDB - So entfernen Sie ein Feld aus einem Dokument

MongoDB - So entfernen Sie ein Feld aus dem Dokument

In diesem MongoDB-Artikel erfahren Sie, wie Sie ein Feld aus einem Dokument und einem Array entfernen.

1. Entfernen Sie ein Feld aus Dokumenten

Beispiel eines Dokuments, und Sie möchten das Feld "affLink" entfernen.

domain.json

{
      "_id" : 1,
      "domain" : "example.com",
      "affLink" : "abc"
}

Um ein Feld aus allen Dokumenten zu entfernen, setzen Sie{multi: true}. Andernfalls wird nur das Feld des ersten übereinstimmenden Dokuments entfernt.

db.domain.update({},{$unset: {affLink:1}},{multi: true});

Ausgabe

domain.json

{
      "_id" : 1,
      "domain" : "example.com"
}

2. Entfernen Sie ein Feld aus dem Array

Vor MongoDB 2.6 gibt es noch keine offizielle Funktion, um ein Feld aus dem Array zu entfernen. Um das Problem zu beheben, müssen Sie ein Skript schreiben:

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

Durchlaufen Sie die Dokumente und entfernen Sie nacheinander das Feld "state" aus dem Array.

 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);

});

Ausgabe

person.json

{
   _id: 1,
   name: "example",
   addresses: [
    {
      street: "99 The Rock Street",
      city: "Boston",
      zip: "66666"
    },
    {
      street: "88 WWF Street",
      city: "Boston",
      zip: "77777"
    }
   ]
}