Supprimer par _id dans MongoDB console
Dans la MongoDB console 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é ça ne fonctionne 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")});
Retrait par nom produit :
db.test_users.remove( {"name":"Gazza"});
C'est dans le navigateur de shell au mongodb.org si cela fait une différence
Grâce
- Aucune des solutions n'a fonctionné pour moi jusqu'à ce que j'ai ajouté un rappel: db.test_users.supprimer( {"_id": '4d512b45cc9374271b02ec4f'}, function(err, data){});
Vous devez vous connecter pour publier un commentaire.
Très proche. Cela va fonctionner:
c'est à dire que vous n'avez pas besoin d'un nouveau pour l'ObjectId.
_id
champ n'est pas généré automatiquement (c'est à dire qu'il n'est pas un ObjectId, mais une Chaîne de caractères), Vous pouvez simplement écrire la valeur de la_id
en vertu de guillemets:db.your.database.remove({"_id": "your value"})
.La réponse est que la console web/coque à mongodb.org se comporte différemment et pas comme je l'attendais. Une version installée à la maison a parfaitement fonctionné sans problème, à savoir la génération automatique d'_id sur le web shell a été enregistré comme ceci :
Le même document de l'installation à la maison et l'auto généré _id a été enregistré comme ceci :
Requêtes travaillé à l'encontre de celle-ci sans problème.
Bien, le _id est un objet dans votre exemple, vous avez juste besoin de passer un objet
Cela devrait fonctionner
Edit: Ajout de fuite parenthèse pour s'assurer qu'il compilé.
Si vous souhaitez supprimer de la liste des IDs cela fonctionne très bien.
Avez-vous plusieurs mongodb nœuds dans un jeu de réplicas?
J'ai trouvé (je l'utilise via Robomongo gui shell mongo, je suppose que même s'applique dans les autres cas) que le bon de supprimer la syntaxe, c'est à dire
...ne fonctionne que si vous êtes connecté à la primaire nœud du jeu de réplicas.
Je viens de tombé sur moi-même et cette variation a fonctionné pour moi:
de la première à obtenir l'ObjectID fonction de mongodb
ObjectId = require(mongodb).ObjectID;
vous pouvez appeler le _id avec la fonction de suppression
"_id" : ObjectId("4d5192665777000000005490")
Solution et Exemple:
1 - C:\MongoDB\Server\3.2\bin>mongo (ne pas émettre de commande encore parce que vous n'êtes pas connecté à une base de données encore, vous n'êtes connecté au serveur de base de données mongodb).
2-
3-
4-
maintenant vous pouvez voir WriteResult({ "nRemoved" : 1 }) est de 1 et non de 0.
Fait.
Même si ce post est obsolète, collection.supprimer est obsolète!
collection.delete_one
devrait être utilisé à la place!Plus d'informations peuvent être trouvées ici, en vertu de l' #supprimer