为什么我们不能在mongodb中定义自己的主键?

时间:2013-07-24 03:13:47

标签: mongodb primary-key

_id字段是为mongodb中的主键保留的。但为什么mongodb的设计是这样的呢?我可以自己定义主键吗?

2 个答案:

答案 0 :(得分:6)

是的,您可以为您的收藏定义自己的主键。请注意,MongoDB驱动程序会自动生成唯一的_id值;但是,您可以覆盖此_id值:

例如。 db.yourcollection.insert({_ ID: “myuniquevalueN”,一个:1,B:1})

您还可以创建强制唯一性的辅助索引。参考下文: http://docs.mongodb.org/manual/tutorial/create-a-unique-index/

我不确定我是否理解你问题的部分原因。正如您所提到的,_id是主键,用于确保集合中文档的唯一性,以及通过唯一ID检索文档的方法。它的目的与其他数据库中的主键没有区别。为什么要预先定义?部分原因是,如果您没有为此目的指定一个,MongoDB会自动为您分配唯一的对象Id值。拥有标准的_id字段简化了实现。

答案 1 :(得分:2)

_id必须是唯一的。由于mongodb节点可以在地理上分布,目的是最小化任何潜在的碰撞机会。