Dans la console MongoDB, comment puis-je supprimer un enregistrement par ID? Voici ma collection:
[
{
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
"name" : "Gazza"
},
{
"_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
"name" : "Dave",
"adminOf" : { },
"email" : "[email protected]"
}
]
Et voici les commandes que j'ai essayées qui ne fonctionnent pas:
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")});
Supprimer par nom fonctionne:
db.test_users.remove( {"name":"Gazza"});
Ceci est dans le navigateur Shell à mongodb.org si cela fait une différence
Merci
Très proche. Cela fonctionnera:
db.test_users.remove( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});
c'est-à-dire que vous n'avez pas besoin d'un nouveau pour l'ObjectId.
La réponse est que la console Web/Shell de mongodb.org se comporte différemment et ne correspond pas à mes attentes. Une version installée à la maison a parfaitement fonctionné, c’est-à-dire; le _id généré automatiquement sur le Web Shell a été enregistré comme ceci:
"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
La même configuration de document à la maison et l'ID généré automatiquement ont été enregistrés comme suit:
"_id" : ObjectId("4d5192665777000000005490")
Les requêtes ont fonctionné contre ce dernier sans problème.
Eh bien, le _id est un objet dans votre exemple, il vous suffit donc de passer un objet
'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'
Cela devrait marcher
Edit: Ajout du paren de fin pour s’assurer qu’il a été compilé.
Si vous souhaitez supprimer une liste d'identifiants, cela fonctionne très bien.
db.CollectionName.remove({
"_id": {
$in: [
ObjectId("0930292929292929292929"),
ObjectId("0920292929292929292929")
]
}
})
Je viens de tomber sur moi-même et cette variation a fonctionné pour moi:
db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})
commencez par obtenir la fonction ObjectID de mongodb ObjectId = require (mongodb) .ObjectID;
alors vous pouvez appeler le _id avec la fonction de suppression
"_id": ObjectId ("4d5192665777000000005490")
Avez-vous plusieurs nœuds mongodb dans un jeu de réplicas?
J'ai trouvé (j'utilise via Robomongo gui mongo Shell, la même chose s'applique dans d'autres cas) que la syntaxe de suppression correcte, c'est-à-dire.
db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")})
... ne fonctionne que si vous êtes connecté au nœud primary du jeu de réplicas.
Même si cette publication est obsolète, collection est obsolète! collection.delete_one
devrait être utilisé à la place!
Plus d'informations peuvent être trouvées ici sous #remove
Solution et exemple:
1- C:\MongoDB\Server\3.2\bin> Mongo (ne lancez pas encore de commande car vous n'êtes pas encore connecté à une base de données, vous êtes uniquement connecté au serveur de base de données mongodb).
2-
montrer dbs base de données analytics 0.000GB 0,000GB local test_database 0.000GB
3-
utilisez test_database basculé sur db test_database
4-
db.Collection.remove ({"_ id": ObjectId ("5694a3590f6d451c1500002e")}, 1); WriteResult ({"nRemoved": 1})
vous voyez maintenant WriteResult ({"nRemoved": 1}) est égal à 1 et non à 0.
Terminé.