如何在MongoDB中设置主键?
我想将我的一个领域设置为主键 。 我正在使用MongoDB作为我的NoSQL。
_id
字段是为mongodb中的主键保留的,并且应该是唯一值。 如果你没有设置任何_id
它会自动填充“MongoDB Id Object”。 但是,您可以将任何独特的信息放入该字段。
附加信息: http : //www.mongodb.org/display/DOCS/BSON
希望能帮助到你。
另一种方法是为您的collections创buildIndexes
,并确保它们是唯一的。
您可以在以下链接中find更多信息
实际上我觉得这很简单,很容易实现。
在mongodb中,_id字段是为主键保留的。 Mongodb使用一个内部的ObjectId值,如果你没有在你的对象中定义它,并创build一个索引来确保性能。
但是你可以为_id赋予你自己的独特价值,Mongodb将会使用它而不是为你创build一个。 即使你想使用多个字段作为主键,你也可以使用一个对象:
{ _id : { a : 1, b: 1} }
创build这些id时,请小心谨慎,按键顺序(示例中的a和b)很重要,如果将它们交换,它将被视为不同的对象。
简单的你可以使用db.collectionName.createIndex({urfield:1},{unique:true});
如果您像RDBMS一样思考不能创build主键,则缺省主键是_id。 但是你可以创build唯一索引 。 示例如下。
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'})
WriteResult({“nInserted”:0,“writeError”:{“code”:11000,“errmsg”:“E11000重复键错误收集:student.members索引:user_id_1 dup键:{:1.0}”}})
这是创build主键的语法
db。<collection> .createIndex(<键和索引types说明>,{unique:true})
我们来看看我们的数据库有一个名为student的集合,它的文档有一个名为student_id的关键字,我们需要创build一个主键。 那么命令应该如下所示。
db.student.createIndex({student_id:1},{unique:true})
您可以通过尝试将重复值添加到学生集合来检查此student_id是否设置为主键。
更喜欢这个文件的更多信息https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
你甚至可以检查dis链接并自动增加_id
实现这种行为的一种方法是将值设置为_id(这是mongoDb中的保留主键)字段,该字段基于要作为主键的自定义字段。
即如果我想要employee_id作为主键,那么在mongoDB中创build文档的时候; 指定_id值与employee_id相同。