rahpuser
rahpuser

Reputation: 1249

ObjectID with conventions

I need to generate ids with a convention, for example:

Instead of getting: "538cd180e381f20d1c1cd2a2" I would like to have an ID like this one: "p38cd180e381f20d1c1cd2a2"

So what I want is that my IDs start with a consonant letter.

Does anyone know how to accomplish that within the driver, I mean, getting that behaviour on "new mongo.ObjectId()"?

Thanks in advance.

Upvotes: 0

Views: 178

Answers (3)

Rockernaap
Rockernaap

Reputation: 143

Use the code: db.collection.insert({"customId":"p"+new ObjectId()}). And let your code use this customId.

Upvotes: 0

Saheed Hussain
Saheed Hussain

Reputation: 1158

You can use the following, to get the id starting with a consonant

db.collection.insert({"_id":"p"+new ObjectId()})

you can use any other string in place of "p" and the string will append to the start of the id generated by mongodb.

Upvotes: 1

displayName
displayName

Reputation: 14359

Short answer: Sorry, no standard way available to achieve this as of now.

Detailed answer and workaround: MongoDB or driver generated ids are a combination of Creation Time (as timestamp), Increment value for next id, Machine on which the id is generated and the process id of the process which generated this document id. All this info is available in the generated id and can be extracted back. For now, this is what you have been given and there is no support for generating your own custom id from the driver's algorithm.

If you want to customize your id generation and be able to make use of these properties, then you can embed all this info that MongoDB uses for id generation and add this information to your document itself. By doing that you will be able to reproduce the information that MongoDB generates from the id. And while inserting the document to MongoDB, you can give your docs a customized id which agrees with your requirements.

So if you later on want to make comparisons based on creation time or maybe the machine, you can do that from the information that was added to the docs themselves.

Upvotes: 0

Related Questions