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