390 votes

Comment rechercher un objet par son ObjectId dans la console mongo ?

J'ai trouvé une réponse à cette question pour C# et Perl, mais pas dans l'interface native. Je pensais que cela fonctionnerait :

db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )

La requête n'a renvoyé aucun résultat. J'ai trouvé le 4ecbe7f9e8c1c9092c000027 en faisant db.theColl.find() et en saisissant un ObjectId. Il y a plusieurs milliers d'objets dans cette collection.

J'ai lu toutes les pages que j'ai pu trouver sur le site mongodb.org et je ne les ai pas trouvées. Est-ce juste une chose étrange à faire ? Cela me semble assez normal.

596voto

Tyler Brock Points 9769

Pas étrange du tout, les gens font ça tout le temps. Assurez-vous que le nom de la collection est correct (la casse compte) et que l'ObjectId est exact.

La documentation est ici

 > db.test.insert({x: 1})

> db.test.find()                                               // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }      

> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c"))           // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

143voto

Mustafa Deniz Points 1190

Si vous utilisez Node.js :

 var ObjectId = require('mongodb').ObjectId; 
var id = req.params.gonderi_id;       
var o_id = new ObjectId(id);
db.test.find({_id:o_id})

Edit : corrigé en nouvel ObjectId(id), pas en nouvel ObjectID(id)

105voto

MPlanchard Points 1071

Encore plus simple, surtout avec la complétion par tabulation :

 db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))

Modifier : fonctionne également avec la commande findOne pour une sortie plus jolie.

24voto

Vous avez manqué d'insérer des guillemets doubles. La requête exacte est

 db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X