Search code examples
c#mongodbmongodb-.net-driver

Get _id of an inserted document in MongoDB?


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)


Solution

  • 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