MongoDB ObjectId: MongoDB creates a unique 12 bytes ID for every object using the timestamp of respective Object creation.
This ObjectId can be used to uniquely target a specific object in the database.
It looks like this, 507f191e810c19729de860ea In this article, we will learn how to check if a string is valid MongoDB ObjectId. Examples: Prerequisites: Mongoose & MongoDB provide a very useful function in ObjectId i.e. ObjectId.isValid(“some_id”) to validate a string for correct MongoDB ID. Import ObjectId from mongodb or mongoose packages: Using Mongoose: However, it ObjectId.isValid(id) returns true even for invalid strings with length 12. To prevent such cases, another check can be added after default validator which would return true or false based on condition, (new ObjectId created from string) cast to string === string A function can be created as follows to check if a string is valid ObjectId or not: Output: Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
During a normal backend workflow, the ObjectId might be received based on some computation or user operations. These might result invalid ObjectId and querying database with wrong ObjectId gives exception which is then handled later.594ced02ed345b2b049222c5 --> Valid MongoDB ObjectId
geeks --> Invalid MongoDB ObjectId
ObjectId can be imported from native mongodb as well as mongoose package.
const ObjectId = require('mongodb').ObjectId;
or
const mongodb, {ObjectId} = require('mongodb');
const ObjectId = require('mongoose').Types.ObjectId;
or
const mongoose = require('mongoose');
ObjectId = mongoose.Types.ObjectId;Id;
For example :String ID ObjectId.isValid(id) Expected Validation 594ced02ed345b2b049222c5 true true geeks false false toptoptoptop true X false geeksfogeeks true X false
i.e. (String)(new ObjectId(id)) === idconst ObjectId = require('mongoose').Types.ObjectId;
function isValidObjectId(id){
if(ObjectId.isValid(id)){
if((String)(new ObjectId(id)) === id)
return true;
return false;
}
return false;
}
Javascript
// Requiring ObjectId from mongoose npm package
const ObjectId = require(
'mongoose'
).Types.ObjectId;
// Validator function
function
isValidObjectId(id){
if
(ObjectId.isValid(id)){
if
((String)(
new
ObjectId(id)) === id)
return
true
;
return
false
;
}
return
false
;
}
// Loading testcases into array
const testStrings = [
"594ced02ed345b2b049222c5"
,
"geeks"
,
"toptoptoptop"
,
"geeksfogeeks"
];
// Validating each test case
for
(const testcase of testStrings){
if
(isValidObjectId(testcase))
console.log(testcase +
" is a valid MongodbID"
);
else
console.log(testcase +
" is not a valid MongodbID"
);
}
Results of this function are:String ID isValidObjectId(id) Expected Validation 594ced02ed345b2b049222c5 true true geeks false false toptoptoptop false false geeksfogeeks false false