MongoDB - Entfernt ein Feld aus dem Array

MongoDB - Entfernen Sie ein Feld aus dem Array

Vor MongoDB 2.6 gibt es keine offizielle Funktion für$unset ein Feld aus einem Array-Dokument.

Note

  1. $unset is not working with arrays

  2. $pull is used to remove the entire record, not a particular field.

1. Ordnet Dokumente an

In diesem Artikel zeigen wir Ihnen, wie Sie das Feld "countryName" aus dem unteren Array entfernen.

> db.hosting.findOne();
{
      "_id" : 39,
      "domain" : "example.com",
      "countryStat" : [
         {
                 "countryCode" : "us",
                 "countryName" : "United States",
                 "count" : 2170
         },
         {
                 "countryCode" : "il",
                 "countryName" : "Israel",
                 "count" : 22
         },

      ]
}

2. Feld aus Arrays-Dokumenten entfernen

Um Felder aus dem Array zu entfernen, müssen Sie ein Skript wie das folgende schreiben:

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

Ausgabe

> db.hosting.findOne();
{
      "_id" : 39,
      "domain" : "example.com",
      "countryStat" : [
         {
                 "countryCode" : "us",
                 "count" : 2170
         },
         {
                 "countryCode" : "il",
                 "count" : 22
         },

      ]
}