4

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

4

2 回答 2

5

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

例如。db.yourcollection.insert({_id:"myuniquevalueN",a:1,b:1})

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

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

于 2013-07-24T03:33:38.997 回答
2

_id 必须是唯一的。由于 mongodb 节点可以在地理上分布,因此目的是尽量减少任何潜在的冲突机会。

于 2013-07-24T03:17:37.583 回答