If I have the mongo document id as a string, how can I request it as _id?

If I have the mongo document id as a string, how can I request it as _id?

Will it work correctly .find({_id:'stringID'}) or do I need to convert it to a bson object first?

+6
source share
2 answers

Do you mean that you have a string with the hexadecimal digit ObjectId?

Assuming what you mean, most drivers have a way to take a string and convert it to an ObjectId. In JavaScript, this is:

 .find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")}) 

Updated to be more useful for the node-native driver (from the documentation at https://github.com/christkv/node-mongodb-native ):

 // Get the objectID type var ObjectID = require('mongodb').ObjectID; var idString = '4e4e1638c85e808431000003'; collection.findOne({_id: new ObjectID(idString)}, console.log) // ok collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined 
+19
source

If your _id values ​​are strings, you can query them just like any other field. (Remember that if you set custom values ​​for _id, they must be unique, or you will get a duplicate key error.)

Here is an example in Shell Mongo JS:

 > db.test.insert({_id:"stringID1"}) > db.test.insert({_id:"stringID2"}) > db.test.insert({_id:"stringID3"}) > db.test.find({_id:"stringID1"}) { "_id" : "stringID1" } > 

Is this what you were looking for? Hope I didn’t get you wrong!

+1
source

Source: https://habr.com/ru/post/913755/


All Articles