'Convert string to ObjectID in MongoDB
I am developing an API using Codeigniter and MongoDB. In some parts of the database I have saved the ID of an image in ObjectID format instead of a string. Now I got an ID in string format and I need to query the database using it.
How can I "convert" a string to an ObjectID so that I can do the query?
From this:
34234234234234234234
To this:
ObjectID("34234234234234234234")
UPDATE
I found a solution. Just do this new MongoId('34234234234234234234');
Solution 1:[1]
Using mongoose:
var mongoose = require('mongoose');
var objectId = mongoose.Types.ObjectId('569ed8269353e9f4c51617aa');
Using native driver (https://stackoverflow.com/a/21076589/3377073)
var ObjectId = require('mongodb').ObjectId;
doc._id = new ObjectId(doc._id); // wrap in ObjectID
Solution 2:[2]
You just need to require the ObjectId function from your mongo.
ObjectId = require('mongodb').ObjectID;
Then you can use it like that:
ObjectId("34234234234234234234")
Solution 3:[3]
If you are using Meteor
var id = new Mongo.ObjectID("34234234234234234234");
Solution 4:[4]
you can now convert string to objectId on mongodb 4.0 and above. there is new feature to convert from string id to objectId
here you can see the documentation $toObjectId
Solution 5:[5]
or better use
var mongodb = require(‘mongodb’); //this might have been defined at the beginning of your code.
//now use it
query = {_id:mongodb.ObjectId('569ed8269353e9f4c51617aa')};
and the rest is the same.
Solution 6:[6]
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('34234234234234234234');
Solution 7:[7]
mongo DB version v3.6.3
how to save string input to MongoDB ObjectId on express controller code
const mongoose = require('mongoose');
var ObjectId = require('mongodb').ObjectId;
user: mongoose.Types.ObjectId(req.body.user)
console.log(user, typeof(user))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | julien bouteloup |
| Solution 3 | Alex K |
| Solution 4 | Carlos |
| Solution 5 | Gelineau |
| Solution 6 | Tejesh Teju |
| Solution 7 | Mr Coder |
