为什么MongoDB使用ObjectID?

6
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }

objectId的目的是什么?它是使用时间戳生成的大数字。

如果我看到任何键值对的NoSQL数据库,我会用键查询值。

在这里,我们将键和值用作数据,并使用find()函数进行查询。

所以,我试图理解我们真正需要objectId的时候是什么? 为什么给用户访问object ID的值的权限?

阅读文档后,一个基本问题是MongoDB是否作为哈希表类型实现?

2个回答

8

准备文档后,一个基本问题是Mongo DB是否作为哈希表类型实现?

MongoDB使用BSON,一种二进制JSON格式。JSON对象基本上只是一个"哈希表"或一组键值对。

对象ID的实际用途是什么?那是一个随时间生成的庞大数字。

在MongoDB中,您存储的每个文档都必须有一个_id。如果您不为_id设置值,则MongoDB将自动为您生成一个。如果在插入对象时具有唯一键,则可以使用该键代替_id。有关ObjectId的详细信息,请参见此处

如果我看到任何key-value型的NoSQL数据库,我会通过key查询value。

MongoDB不仅支持key-value型。MongoDB支持在单个集合上进行多个索引,并且可以查询许多不同的字段,而不仅仅是"key"或"id"。


猜测ObjectId参考链接应该是http://docs.mongodb.org/manual/reference/object-id/。 - Marian
“那么,为什么要让用户查看对象ID的值呢?” - ilans

5

Object ID类似于关系型数据库中的主键。每当您插入新文档时,MongoDB都会生成一个Object ID。

Object ID是12字节的BSON类型。

前4个字节表示时间戳,接下来的3个字节是唯一的机器标识符,再接下来的2个字节是进程ID,最后3个字节是随机增量计数器。

返回相应的16位十六进制值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接