Get _id of an inserted document in MongoDB?

Earlz picture Earlz · Jan 3, 2011 · Viewed 29.2k times · Source

say I have a product listing. When I add a new product I save it using something like

var doc=products.Insert<ProductPDO>(p);

The problem is that I want after this is done to redirect the user to the page with the product. So I need to redirect to say /products/<ObjectID>

However, I see no way of getting the ObjectID right afterwards without manually querying the database and look for a document with all the same fields and such.

Is there an easier way? (also, doc in this instance returns null for some reason)

Answer

Scott Hernandez picture Scott Hernandez · Jan 3, 2011

The Insert method automatically sets the property that is declared as the BSON ID of the model.

If declared as follows...

[BsonId]
public ObjectId Id { get; set; }

... then the Id field will contain the default (new, unique) BSON ID of the object after inserting the object into a collection:

coll.Insert(obj);
// obj.Id is now the BSON ID of the object