Wie kann ich in der MongoDB-Konsole einen Datensatz anhand der ID entfernen? Hier ist meine Sammlung:
[
{
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"name" : "Gazza"
},
{
"_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
"name" : "Dave",
"adminOf" : { },
"email" : "[email protected]"
}
]
Und hier sind die Befehle, die ich ausprobiert habe und die nicht funktionieren:
db.test_users.remove( {"_id":{"$oid":new ObjectId("4d512b45cc9374271b02ec4f")}});
db.test_users.remove( {"_id":{"$oid":"4d513345cc9374271b02ec6c"}});
db.test_users.remove( {"_id":"4d512b45cc9374271b02ec4f"});
db.test_users.remove( {"_id":new ObjectId("4d512b45cc9374271b02ec4f")});
Das Entfernen nach Namen funktioniert:
db.test_users.remove( {"name":"Gazza"});
Dies ist in der Browser-Shell auf mongodb.org, wenn dies einen Unterschied macht
Vielen Dank
Antworten:
Sehr nah. Das wird funktionieren:
dh Sie benötigen keine neue für die ObjectId.
Beachten Sie auch, dass in einigen Treiber / Tools,
remove()
ist veraltet und wirddeleteOne
oderdeleteMany
sollte stattdessen verwendet werden.quelle
_id
Feld nicht automatisch generiert wird (dh es ist keine ObjectId, sondern eine Zeichenfolge), können Sie einfach den Wert der_id
unter Anführungszeichen stehenden Zeichen schreiben :db.your.database.remove({"_id": "your value"})
.Die Antwort ist, dass sich die Webkonsole / Shell auf mongodb.org anders verhält und nicht so, wie ich es erwartet hatte. Eine zu Hause installierte Version funktionierte einwandfrei, dh; Die automatisch generierte _id in der Web-Shell wurde wie folgt gespeichert:
Das gleiche Dokument-Setup zu Hause und die automatisch generierte _id wurden wie folgt gespeichert:
Abfragen funktionierten problemlos gegen Letzteres.
quelle
Nun, die _id ist ein Objekt in Ihrem Beispiel, Sie müssen also nur ein Objekt übergeben
Das sollte funktionieren
Bearbeiten: Nachfolgendes Paren hinzugefügt, um sicherzustellen, dass es kompiliert wird.
quelle
Wenn Sie anhand einer Liste von IDs entfernen möchten, funktioniert dies hervorragend.
quelle
Haben Sie mehrere Mongodb-Knoten in einem Replikatsatz?
Ich fand (ich verwende über Robomongo Gui Mongo Shell, ich denke, dasselbe gilt in anderen Fällen), dass die richtige Syntax zum Entfernen, dh
... funktioniert nicht, es sei denn , Sie mit dem verbunden sind primäre Knoten der Replikat - Gruppe.
quelle
Ich bin gerade selbst darauf gestoßen und diese Variante hat bei mir funktioniert:
quelle
Holen Sie sich zuerst die ObjectID-Funktion aus dem Mongodb ObjectId = require (mongodb) .ObjectID;
dann können Sie die _id mit der Löschfunktion aufrufen
"_id": ObjectId ("4d5192665777000000005490")
quelle
Obwohl dieser Beitrag veraltet ist, ist collection.remove veraltet!
collection.delete_one
sollte stattdessen verwendet werden!Weitere Informationen finden Sie hier unter #remove
quelle
Angenommen, wir haben diese Dummy-Sammlung:
Verwenden Sie einfach:
es wird mit dieser als Antwort gelöscht:
Das ist es.
quelle
Lösung und Beispiel:
1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (Befehl noch nicht ausgeben, da Sie noch nicht mit einer Datenbank verbunden sind, sondern nur mit dem Datenbankserver mongodb).
2-
3-
4-
Jetzt sehen Sie, dass WriteResult ({"nRemoved": 1}) 1 nicht 0 ist.
Getan.
quelle