25
votes

I am developing an API using Codeigniter and MongoDB. In this system I am saving the full name and _ID of users that the selected user is following.

What is best to do regarding the _Id? Store it as an object or as a string? If I store it as an object I need to convert it to string when echoing out followers otherwise the output looks strange.

My question is really. Is it ok to store the _Id as a string rather than an object? What is the downside of storing as string?

Thankful for all input!

2

2 Answers

23
votes

Performance for requests (and updates) are really better with objectid. More over, objectid are quite small in space.

From the official doc :

BSON includes a binary data datatype for storing byte arrays. Using this will make the id values, and their respective keys in the _id index, twice as small.

here are 2 links that can help you : - http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs - http://www.mongodb.org/display/DOCS/Object+IDs

2
votes

When you use ObjectId, it generates _id as a unique value in all your computers. So if you use Sharding, you will not worry about you _id conflicts. See how ObjectId generates in specification
But if you use string, you should generate it carefully.