2012-04-13 26 views
33

Ich muss einen bestimmten Schlüssel und Wert aus jedem Eintrag in einer bestimmten Sammlung löschen. Ich habe in Remove geschaut und das scheint nur für ganze Einträge zu sein. Wenn ich update betrachte, glaube ich nicht, dass das Aktualisieren eines bestimmten Schlüssels mit null oder einer leeren Zeichenkette das erreichen würde, was ich versuche zu tun. Ich bin sehr viel Anfänger mit Mongodb, entschuldige bitte meine Ignoranz.Löschen eines Schlüssels/Wertes aus dem vorhandenen MongoDB-Eintrag

Lange Rede kurzer Sinn, wie kann ich

{ 
    "_id" : 1234, 
    "name" : "Chris", 
    "description" : "Awesome" 
} 

in

{ 
    "_id" : 1234, 
    "name" : "Chris" 
} 

ohne den Eintrag zu löschen und die Schaffung eines neuen drehen, oder bei einem nicht-mongodb Befehle? Vielen Dank!

+0

Mögliche Duplikat entfernen [Wie kann ich vollständig von Mongo ein Feld entfernen?] (Http://stackoverflow.com/questions/6851933/how-do-ich-entferne-ein-feld-komplett-aus-mongo) –

Antwort

68

Versuchen Sie $unset in einem Anruf zu update().

Mit anderen Worten,

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} });

sollte funktionieren. Link.

+1

Danke! Das hat perfekt funktioniert. – Chris

+15

Um alle Dokumente in einer Sammlung zu aktualisieren, können Sie verwenden: 'db.collection_name.update ({}, {$ unset: {description: 1}}, false, true);' Das letzte wahr ist für mehrere Dokumente zu aktualisieren –

+2

Neuere Versionen unterstützt ein besser lesbares Format: 'db.example.update ({}, {$ unset: {words: 1}}, {multi: true})' – phocks

-5

Denken Sie auch über upsert(), die Ihre Zeile als neues Dokument einfügen, wenn _id nicht vorhanden ist oder das vorhandene Dokument aktualisieren, falls vorhanden.

2

ein Paket verweisen und verschiedene „Schlüssel“, versuchen Sie dieses

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" })] 
Verwandte Themen