Convert .NET Guid to MongoDB ObjectID

Journeyman picture Journeyman · Apr 1, 2011 · Viewed 28.4k times · Source

How can I convert a .NET GUID to a MongoDB ObjectID (in C#). Also, can I convert it back again to the same GUID from the ObjectID?

Answer

Andrew Orsich picture Andrew Orsich · Apr 1, 2011

You can't convert ObjectId into GUID and vice versa, because they are two different things(different sizes, algoritms).

You can use any type for mongoDb _id including GUID.

For example in official c# driver you should specify attribute [BsonId]:

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

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

ObjectId:

A BSON ObjectID is a 12-byte value consisting of a 4-byte timestamp (seconds since epoch), a 3-byte machine id, a 2-byte process id, and a 3-byte counter. Note that the timestamp and counter fields must be stored big endian unlike the rest of BSON. This is because they are compared byte-by-byte and we want to ensure a mostly increasing order.

GUID:

The value of a GUID is represented as a 32-character hexadecimal string, such as {21EC2020-3AEA-1069-A2DD-08002B30309D}, and is usually stored as a 128-bit integer