Dans la console MongoDB, comment puis-je supprimer un enregistrement par identifiant? 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")});
La suppression par nom fonctionne:
db.test_users.remove( {"name":"Gazza"});
Ceci est dans le shell du navigateur sur mongodb.org si cela fait une différence
Merci
Réponses:
Très proche. Cela fonctionnera:
c'est-à-dire que vous n'avez pas besoin d'un nouveau pour ObjectId.
Notez également que dans certains pilotes / outils,
remove()
est désormais obsolète etdeleteOne
/deleteMany
doit être utilisé à la place.la source
_id
champ n'est pas généré automatiquement (il est pas un ObjectId, mais une chaîne), vous pouvez simplement écrire la valeur de la_id
sous guillemets:db.your.database.remove({"_id": "your value"})
.La réponse est que la console / shell Web de mongodb.org se comporte différemment et pas comme je m'y attendais. Une version installée à la maison fonctionnait parfaitement sans problème ie; le _id généré automatiquement sur le shell Web a été enregistré comme ceci:
La même configuration de document à la maison et le _id généré automatiquement ont été enregistrés comme ceci:
Les requêtes ont fonctionné contre ce dernier sans problème.
la source
Eh bien, le _id est un objet dans votre exemple, il vous suffit donc de passer un objet
Cela devrait fonctionner
Edit: Ajout d'un paren de fin pour s'assurer qu'il est compilé.
la source
Si vous souhaitez supprimer par une liste d'identifiants, cela fonctionne très bien.
la source
Avez-vous plusieurs nœuds mongodb dans un jeu de réplicas?
J'ai trouvé (j'utilise via Robomongo gui mongo shell, je suppose qu'il en va de même dans d'autres cas) que la syntaxe de suppression correcte, c'est-à-dire
... ne fonctionne que si vous êtes connecté au nœud principal du jeu de réplicas.
la source
Je viens de tomber sur cela moi-même et cette variante a fonctionné pour moi:
la source
obtenez d'abord la fonction ObjectID à partir du mongodb ObjectId = require (mongodb) .ObjectID;
alors vous pouvez appeler le _id avec la fonction de suppression
"_id": ObjectId ("4d5192665777000000005490")
la source
Même si ce message est obsolète, collection.remove est obsolète!
collection.delete_one
devrait être utilisé à la place!Plus d'informations peuvent être trouvées ici sous #remove
la source
Supposons que nous ayons cette collection factice:
utilisez simplement:
il sera supprimé avec ceci en réponse:
C'est tout.
la source
Solution et exemple:
1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (n'émettez pas encore de commande car vous n'êtes encore connecté à aucune base de données, vous n'êtes connecté qu'au serveur de base de données mongodb).
2-
3-
4-
maintenant vous voyez que WriteResult ({"nRemoved": 1}) est 1 et non 0.
Terminé.
la source