I need to randomly generate objectid in node js.Is there is any way to create.
Asked
Active
Viewed 2.3k times
12
-
What do you mean by `objectid`? `Math.random()`? – MiniGod Oct 09 '12 at 09:42
-
24 digit id "5073c76a23ce3abf0f000001" like this. – user1705980 Oct 09 '12 at 09:46
-
1I have no idea what this 12byte `objectid` is, but you can try to take a substring of a md5 of a random number? – MiniGod Oct 09 '12 at 09:57
-
1Here is how MongoDB generate objectids: https://github.com/mongodb/js-bson/blob/1.0-branch/lib/bson/objectid.js – Ulysse BN Apr 24 '18 at 09:07
4 Answers
44
If you mean a MongoDB ObjectID, try this:
var ObjectID = require('mongodb').ObjectID;
var objectId = new ObjectID();

Werner Kvalem Vesterås
- 10,226
- 5
- 43
- 50
9
Another way to generate the mongoDB object id is.
function objectId() {
const os = require('os');
const crypto = require('crypto');
const secondInHex = Math.floor(new Date()/1000).toString(16);
const machineId = crypto.createHash('md5').update(os.hostname()).digest('hex').slice(0, 6);
const processId = process.pid.toString(16).slice(0, 4).padStart(4, '0');
const counter = process.hrtime()[1].toString(16).slice(0, 6).padStart(6, '0');
return secondInHex + machineId + processId + counter;
}

C M
- 684
- 9
- 22
3
Creating ObjectId in the mongodb:
const {ObjectId} = require('mongodb');
// Method 1:
const myId = new ObjectId(); // No argument
// say, myId = ObjectId("507f1f77bcf86cd799439011")
// Access the Hexadecimal String from the ObjectId
console.log(ObjectId("507f1f77bcf86cd799439011").str);
// 507f1f77bcf86cd799439011
// Method 2: Specify your own unique Hexadecimal String (12 bytes long)
const myId = new ObjectId("507f191e810c19729de860ea"); // with argument
// myId = ObjectId("507f191e810c19729de860ea")

SridharKritha
- 8,481
- 2
- 52
- 43
3
If you would use typeScript you can use :
import { Types } from 'mongoose';
const _id = new Types.ObjectId();

M.A.Bell
- 398
- 1
- 16