web-dev-qa-db-de.com

Entfernen Sie diese in der MongoDB-Konsole durch _id

Wie kann ich in der MongoDB-Konsole einen Datensatz nach 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, 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")});

Nach Namen entfernen:

db.test_users.remove( {"name":"Gazza"});

Dies ist in der Browser-Shell unter mongodb.org , falls dies einen Unterschied macht

Vielen Dank

115
Typo Johnson

Sehr nah. Das wird funktionieren:

db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});

das heißt, Sie brauchen kein new für die ObjectId.

238
Nic Cottrell

Die Antwort ist, dass sich die Webkonsole/Shell bei mongodb.org anders verhält und nicht wie erwartet. Eine zu Hause installierte Version funktionierte einwandfrei, dh; Die automatisch generierte _id in der Web-Shell wurde wie folgt gespeichert:

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },

Die gleichen Dokumenteinstellungen zu Hause und die automatisch generierte _id wurden wie folgt gespeichert:

"_id" : ObjectId("4d5192665777000000005490")

Abfragen funktionierten problemlos gegen Letzteres.

16
Typo Johnson

Die _id ist in Ihrem Beispiel ein Objekt. Sie müssen also nur ein Objekt übergeben

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'

Das sollte funktionieren

Edit: Nachlaufender Paren hinzugefügt, um sicherzustellen, dass er kompiliert wurde.

12
Dmitri

Wenn Sie eine Liste mit IDs entfernen möchten, funktioniert dies hervorragend. 

db.CollectionName.remove({
    "_id": {
        $in: [
            ObjectId("0930292929292929292929"),
            ObjectId("0920292929292929292929")
        ]
     }
}) 
8
mjwrazor

Ich bin gerade auf mich selbst gestoßen und diese Variation hat für mich funktioniert:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})
4
Karoy

rufen Sie zuerst die ObjectID-Funktion aus dem Mongodb ab ObjectId = Required (Mongodb) .ObjectID;

dann können Sie die _id mit der delete-Funktion aufrufen

"_id": ObjectId ("4d5192665777000000005490")

3
SA Khan

Verfügen Sie über mehrere Mongodb-Knoten in einem Replikatsatz?

Ich habe festgestellt (ich verwende via Robomongo gui mongo Shell, ich denke, dass gilt auch in anderen Fällen), dass die korrekte Entfernungssyntax, d. H.

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")})

... funktioniert nur, wenn Sie mit dem Knoten primary des Replikatsatzes verbunden sind.

2
Anentropic

Obwohl dieser Beitrag veraltet ist, ist collection.remove veraltet! collection.delete_one sollte stattdessen verwendet werden!

Weitere Informationen finden Sie hier unter #remove

0
Yuval Meshorer

Lösung und Beispiel:

1- C:\MongoDB\Server\3.2\bin> Mongo (geben Sie den Befehl noch nicht aus, da Sie noch nicht mit einer Datenbank verbunden sind, sondern nur mit dem Datenbankserver mongodb).

2- 

zeige dbs analytics_database 0.000GB lokal 0.000 GB test_database 0.000GB

3- 

verwenden Sie test_database auf db test_database umgestellt

4-

db.Collection.remove ({"_ id": ObjectId ("5694a3590f6d451c1500002e")}, 1); WriteResult ({"nRemoved": 1})

jetzt sehen Sie, dass WriteResult ({"nRemoved": 1}) 1 nicht 0 ist.

Erledigt.

0
Dung