bsr
bsr

Reputation: 58662

Mongodb: object id as short primary key within a collection

How to make better use of objectId generate by MongoDB. I am not an expert user, but so far i ended up creating seperate id for my object (userid, postid) etc because the object id is too long and makes the url ugly if use as the main ID. I keep the _id intact as it help indexing etc. I was wondering about any better strategy so that one can use mongo objectId as more url friendly and easy to remember key. I read the key was a combination of date etc, so any of the part can be used unique within a collection for this purpose.

thanks,
bsr/

Upvotes: 6

Views: 2423

Answers (2)

Gates VP
Gates VP

Reputation: 45277

If you have an existing ID (say from an existing data set), then it's perfectly OK to override _id with the one you have.

...keeo the _id intact as it help indexing etc

MongoDB indexes the _id field by default. If you start putting integers in the _id field, they will be indexed like everything else.

So most RDBMs provide an "auto-increment" ID. This is nice for small datasets, but really poor in terms of scalability. If you're trying to insert data to 20 servers at once, how do you keep the "auto-increment" intact?

The normal answer is that you don't. Instead, you end up using things like GUIDs for those IDs. In the case of MongoDB, the ObjectId is already provided.

I was wondering about any better strategy so that one can use mongo objectId as more url friendly and easy to remember key

So the problem here is that "easy to remember" ID doesn't really mesh with "highly scalable database". When you have a billion documents, the IDs are not really "easy to remember".

So you have to make the trade-off here. If you have a table that can get really big, I suggest using the ObjectId. If you have a table that's relatively small and doesn't get updated often, (like a "lookup" table) then you can build your own auto-increment.

The choice is really up to you.

Upvotes: 3

user2665694
user2665694

Reputation:

You can overwrite the _id yourself. There is no obligation for using the auto-generated object id. What is the problem with overriding _id inside your app according to your own needs?

Upvotes: 0

Related Questions