Sin*_*nan 74
_id字段是为mongodb中的主键保留的,应该是唯一值.如果您没有设置任何内容,_id它将自动填充"MongoDB Id Object".但是您可以将任何唯一信息添加到该字段中.
其他信息:http://www.mongodb.org/display/DOCS/BSON
希望能帮助到你.
Ali*_*Ali 13
在mongodb _id字段中保留主键.如果您没有在对象中定义它,并且还创建索引以确保性能,Mongodb将使用内部ObjectId值.
但你可以为_id设置自己独特的价值,而Mongodb将使用它而不是为你制作一个.即使您想使用多个字段作为主键,您也可以使用对象:
{ _id : { a : 1, b: 1} }
Run Code Online (Sandbox Code Playgroud)
在创建这些ID时要小心,键的顺序(示例中的a和b)很重要,如果你交换它们,它被认为是一个不同的对象.
如果您想像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}”}})
实现此行为的一种方法是_id根据要视为主键的自定义字段将值设置为(为 MongoDB 中的主键保留)字段。
即如果我想employee_id作为主键,那么在 MongoDB 中创建文档时;赋值_id与 相同employee_id。
这是创建主键的语法
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
| 归档时间: |
|
| 查看次数: |
101302 次 |
| 最近记录: |