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

标签 mongodb primary-key

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

最佳答案

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

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

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

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

关于mongodb - 为什么我们不能在mongodb中自己定义主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824581/

相关文章:

node.js - Mongoose 在哪里查询 "or"

arrays - 如何在 Robo3T 中将结果从一个查询传递到另一个查询

sql - 我们是否应该将代理键与自然键(唯一索引均值)结合起来以提高可读性并易于查询选择?

mysql - MySQL 是否会因主键值非常高而变慢?

python - 使用具有现有数据库 ID 字段的 Django 问题

php - Doctrine MongoDb Embedded Document - 如何指定字段

javascript - Mongoose 填充排序无法正常工作

mongodb - 在 Flask 中的 HTTP 请求之间保存 MongoDB 游标

oracle - 在巨大的表中创建索引/pk 花费的时间太长。我正在使用甲骨文。我怎么知道它是否进展顺利?

mysql - 创建一个学生ID以字母开头的表 - mysql