如何将.NET GUID转换为MongoDB ObjectID(在C#中).另外,我可以将它再次转换回ObjectID中的相同GUID吗?
And*_*ich 34
你不能转换ObjectId成GUID反之亦然,因为它们是两个不同的东西(不同的大小,算法).
你可以使用任何类型的mongoDb _id包括GUID.
例如,在官方c#驱动程序中,您应该指定属性[BsonId]:
[BsonId]
public Guid Id {get;set;}
[BsonId]
public int Id {get;set;}
Run Code Online (Sandbox Code Playgroud)
BSON ObjectID是一个12字节的值,由4字节时间戳(自纪元以来的秒数),3字节机器ID,2字节进程ID和3字节计数器组成.请注意,与BSON的其余部分不同,时间戳和计数器字段必须以big endian存储.这是因为它们是逐字节比较的,我们希望确保大多增加订单.
GUID:
GUID的值表示为32个字符的十六进制字符串,例如{21EC2020-3AEA-1069-A2DD-08002B30309D},通常存储为128位整数
仅供参考您可以从ObjectId转换为Guid
public static Guid AsGuid(this ObjectId oid)
{
var bytes = oid.ToByteArray().Concat(new byte[] { 5, 5, 5, 5 }).ToArray();
Guid gid = new Guid(bytes);
return gid;
}
/// <summary>
/// Only Use to convert a Guid that was once an ObjectId
/// </summary>
public static ObjectId AsObjectId(this Guid gid)
{
var bytes = gid.ToByteArray().Take(12).ToArray();
var oid = new ObjectId(bytes);
return oid;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23935 次 |
| 最近记录: |