如何在MongoDB中设置主键?

Tau*_*uir 65 mongodb

我想将我的一个字段设置为主键.我使用MongoDB作为我的NoSQL.

Sin*_*nan 74

_id字段是为mongodb中的主键保留的,应该是唯一值.如果您没有设置任何内容,_id它将自动填充"MongoDB Id Object".但是您可以将任何唯一信息添加到该字段中.

其他信息:http://www.mongodb.org/display/DOCS/BSON

希望能帮助到你.

  • 这确实没有回答"如何将我的一个字段设置为主键",例如:我希望user_email作为用户集合中的键,但是如何将该字段设置为键和唯一 (61认同)
  • 这怎么回答这个问题?? (6认同)

amo*_*tam 19

另一种方法是Indexes为您的收藏创建并确保它们是独一无二的.

您可以在以下链接中找到更多信息

我实际上发现这很简单,易于实现.

  • "对索引的唯一约束确保只有一个文档可以具有集合中字段的值.对于分片集合,这些唯一索引不能强制实现唯一性,因为插入和索引操作对于每个分片是本地的"--https:// docs. mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ (3认同)

Ali*_*Ali 13

在mongodb _id字段中保留主键.如果您没有在对象中定义它,并且还创建索引以确保性能,Mongodb将使用内部ObjectId值.

但你可以为_id设置自己独特的价值,而Mongodb将使用它而不是为你制作一个.即使您想使用多个字段作为主键,您也可以使用对象:

{ _id : { a : 1, b: 1} }
Run Code Online (Sandbox Code Playgroud)

在创建这些ID时要小心,键的顺序(示例中的a和b)很重要,如果你交换它们,它被认为是一个不同的对象.


Nan*_*mar 7

如果您想像RDBMS一样无法创建主键,则默认主键为_id。但是您可以创建唯一索引。例子如下。

db.members.createIndex( { "user_id": 1 }, { unique: true } )

db.members.insert({'user_id':1,'name':'nanhe'})

db.members.insert({'name':'kumar'})

db.members.find();
Run Code Online (Sandbox Code Playgroud)

输出如下。

{“ _id”:ObjectId(“ 577f9cecd71d71fa1fb6f43a”),“ user_id”:1,1,“ name”:“ nanhe”}

{“ _id”:ObjectId(“ 577f9d02d71d71fa1fb6f43b”),“名称”:“ kumar”}

当您尝试插入相同的user_id mongodb trow写入错误时。

db.members.insert({'user_id':1,'name':'aarush'})
Run Code Online (Sandbox Code Playgroud)

WriteResult({“ nInserted”:0,“ writeError”:{“ code”:11000,“ errmsg”:“ E11000重复键错误集合:student.members索引:user_id_1 dup键:{:1.0}”}})


cod*_*hki 6

实现此行为的一种方法是_id根据要视为主键的自定义字段将值设置为(为 MongoDB 中的主键保留)字段。
即如果我想employee_id作为主键,那么在 MongoDB 中创建文档时;赋值_id与 相同employee_id


Abh*_*kra 5

你可以使用简单 db.collectionName.createIndex({urfield:1},{unique:true});


Men*_*han 5

这是创建主键的语法

db.<集合>.createIndex(<键和索引类型规范>, { unique: true } )

假设我们的数据库有名为student的集合,它的文档有名为student_id的键,我们需要将其作为主键。那么命令应该如下所示。

db.student.createIndex({student_id:1},{unique:true})
Run Code Online (Sandbox Code Playgroud)

您可以通过尝试向学生集合添加重复值来检查此student_id是否设置为主键。

更喜欢此文档以获取更多信息 https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index