我想将我的一个字段设置为主键。我使用MongoDB作为我的NoSQL。
答案 0 :(得分:75)
_id
字段保留给mongodb中的主键,并且应该是唯一值。如果您未向_id
设置任何内容,它将自动用“MongoDB Id Object”填充它。但您可以将任何唯一信息添加到该字段中。
其他信息:http://www.mongodb.org/display/DOCS/BSON
希望它有所帮助。
答案 1 :(得分:17)
答案 2 :(得分:12)
在mongodb中_id字段保留给主键。 Mongodb使用内部ObjectId值,如果您没有在对象中定义它,并创建索引以确保性能。
但你可以为_id设置自己独特的价值,Mongodb将使用它而不是为你制作一个。即使您想使用多个字段作为主键,也可以使用对象:
1 is True
在创建这些ID时要小心,键的顺序(示例中的a和b)很重要,如果你交换它们,它会被认为是另一个对象。
答案 3 :(得分:5)
如果您认为RDBMS无法创建主键,则默认主键为_id。 但您可以创建Unique Index。示例如下:
db.members.createIndex( { "user_id": 1 }, { unique: true } )
db.members.insert({'user_id':1,'name':'nanhe'})
db.members.insert({'name':'kumar'})
db.members.find();
输出低于。
{" _id" :ObjectId(" 577f9cecd71d71fa1fb6f43a")," user_id" :1," name" :" nanhe" }
{" _id" :ObjectId(" 577f9d02d71d71fa1fb6f43b")," name" :" kumar" }
当您尝试插入相同的user_id mongodb trow写入错误。
db.members.insert({'user_id':1,'name':'aarush'})
写结果({ " nInserted" :0, " writeError" :{ "代码" :11000, " ERRMSG" :" E11000重复键错误集合:student.members index:user_id_1 dup key:{:1.0}" } })
答案 4 :(得分:5)
简单,您可以使用db.collectionName.createIndex({urfield:1},{unique:true});
答案 5 :(得分:2)
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
您还可以查看此链接并自动增加_id
字段。
答案 6 :(得分:2)
实现此行为的一种方法是根据您要将其视为主键的自定义字段,将值设置为_id
(为MongoDB中的主键保留)字段。
即如果我想要employee_id
作为主键,那么在MongoDB中创建文档时;指定与_id
相同的employee_id
值。
答案 7 :(得分:2)
这是创建主键的语法
分贝&LT。 collection> .createIndex(< key and index type specification>,{ unique:true})
让我们假设我们的数据库有名为学生的集合,并且它的文档具有名为 student_id 的密钥,我们需要将其作为主键。那么命令应该如下所示。
$array['content']['content']['content'] = array();
$content3 = &$array['content']['content']['content'];
$content3['content4'] = 'something';
您可以尝试将重复值添加到学生集合中,检查此 student_id 是否设置为主键。
更喜欢此文档以获取更多信息https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index
答案 8 :(得分:2)
如果您在Meteor上使用Mongo,则可以使用_ensureIndex
:
CollectionName._ensureIndex({field:1 }, {unique: true});