2

Mongodb 对象 id 是一个字节数组,其中大量信息被打包到字节数组中,如下所示:

http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype

即:给定一个 id 47cc67093475061e3d95369d,它包含日期时间、机器、id 和 inc 信息。他们如何将所有这些信息存储到 id 中?

他们是怎么做到的?字节打包是如何发生的?

有没有代表这个的例子?

4

2 回答 2

2

时间是自 1970 年 1 月 1 日以来的秒数,在他们的示例中是 1,204,578,057。

对于二进制表示,1204578057(基数 10)是 47cc6709(基数 16)。没什么可做的。这就是它在计算机上的样子。

要将该值转换为字符串(对于 ObjectId 方法),只需使用“X”调用ToString :

1204578057.ToString("X")

结构本身在此处完全定义 - BSONObjectIDSpecification

您可能还想在这里研究结构布局:http: //msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute.aspx

于 2012-08-27T21:30:01.163 回答
2

抱歉,如果我不理解您的问题,但 ObjectId 的格式在您提供的链接中给出。在您提供的 ID 中,这意味着以下内容:

47cc67093475061e3d95369d

字节 0、1、2 和 3 = 时间戳。
47cc6709= 时间戳。

字节 4、5 和 6 = 机器 ID。
347506= 机器 ID。

字节 7 和 8 = PID
1e3d= PID

字节 9、10 和 11 = 增量
95369d= 增量

于 2012-08-27T18:34:09.187 回答