480 Stimmen

Wie entfernt man ein Feld vollständig aus einem MongoDB-Dokument?

{ 
    name: 'book',
    tags: {
        words: ['abc','123'],
        lat: 33,
        long: 22
    }
}

Nehmen wir an, es handelt sich um ein Dokument. Wie entferne ich " words " vollständig aus allen Dokumenten dieser Sammlung entfernen? Ich möchte, dass alle Dokumente ohne " " sind. words ":

 { 
     name: 'book',
     tags: {
         lat: 33,
         long: 22
     }
}

789voto

Shaunak Punkte 17121

Versuchen Sie dies: Wenn Ihre Sammlung 'Beispiel' war

db.example.update({}, {$unset: {words:1}}, false, true);

Siehe dies:

http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset

UPDATE :

Der obige Link deckt '$unset'ing nicht mehr ab. Bitte fügen Sie unbedingt {multi: true} wenn Sie dieses Feld aus allen Dokumenten der Sammlung entfernen möchten; andernfalls wird es nur aus dem ersten übereinstimmenden Dokument entfernt. Hier finden Sie eine aktualisierte Dokumentation:

https://docs.mongodb.com/manual/reference/operator/update/unset/

Exemple :

db.example.update({}, {$unset: {words:1}} , {multi: true});

225voto

Salvador Dali Punkte 197375

Am Anfang habe ich nicht verstanden, warum die Frage eine Prämie hat (ich dachte, dass die Frage eine schöne Antwort hat und es nichts hinzuzufügen gibt), aber dann habe ich bemerkt, dass die Antwort, die angenommen und 15 Mal hochgevotet wurde, eigentlich falsch war!

Ja, Sie müssen die $unset Betreiber aber dieses "unset" wird den Schlüssel "words" entfernen, der für ein Dokument in einer Sammlung nicht existiert. Es wird also im Grunde nichts bewirken.

Sie müssen also Mongo anweisen, in den Dokument-Tags und dann in den Wörtern zu suchen, indem Sie Punktnotation . Die richtige Frage lautet also.

db.example.update(
  {},
  { $unset: {'tags.words':1}},
  false, true
)

Der Vollständigkeit halber möchte ich auf folgende Punkte hinweisen eine andere Art, es zu tun was viel schlimmer ist, aber auf diese Weise können Sie das Feld mit einem beliebigen benutzerdefinierten Code ändern (sogar auf der Grundlage eines anderen Feldes aus diesem Dokument).

80voto

Vipul Pandey Punkte 1271
db.example.updateMany({},{"$unset":{"tags.words":1}})

Auf diese Weise können wir auch mehrere Dokumente aktualisieren.

34voto

Jatin Saradgikar Punkte 211
db.collection.updateMany({}, {$unset: {"fieldName": ""}})

updateMany erfordert eine passende Bedingung für jedes Dokument, da wir {} übergeben, ist sie immer wahr. Und das zweite Argument verwendet $unset Operator, um das erforderliche Feld in jedem Dokument zu entfernen.

27voto

Viral Patel Punkte 851

So entfernen oder löschen Sie ein Feld in MongoDB

  • Für einzelne Datensätze

    db.getCollection('userData').update({}, {$unset: {pi: 1}})
  • Für Multi Record

    db.getCollection('userData').update({}, {$unset: {pi: 1}}, {multi: true})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X