Mongodb 对象 id 是一个字节数组,其中大量信息被打包到字节数组中,如下所示:
http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype
即:给定一个 id 47cc67093475061e3d95369d
,它包含日期时间、机器、id 和 inc 信息。他们如何将所有这些信息存储到 id 中?
他们是怎么做到的?字节打包是如何发生的?
有没有代表这个的例子?
Mongodb 对象 id 是一个字节数组,其中大量信息被打包到字节数组中,如下所示:
http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype
即:给定一个 id 47cc67093475061e3d95369d
,它包含日期时间、机器、id 和 inc 信息。他们如何将所有这些信息存储到 id 中?
他们是怎么做到的?字节打包是如何发生的?
有没有代表这个的例子?
时间是自 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
抱歉,如果我不理解您的问题,但 ObjectId 的格式在您提供的链接中给出。在您提供的 ID 中,这意味着以下内容:
47cc67093475061e3d95369d
字节 0、1、2 和 3 = 时间戳。
47cc6709
= 时间戳。
字节 4、5 和 6 = 机器 ID。
347506
= 机器 ID。
字节 7 和 8 = PID
1e3d
= PID
字节 9、10 和 11 = 增量
95369d
= 增量