我想将我的一个字段设置为主键.我使用MongoDB作为我的NoSQL.
_id
字段是为mongodb中的主键保留的,应该是唯一值.如果您没有设置任何内容,_id
它将自动填充"MongoDB Id Object".但是您可以将任何唯一信息添加到该字段中.
其他信息:http://www.mongodb.org/display/DOCS/BSON
希望能帮助到你.
另一种方法是Indexes
为您的收藏创建并确保它们是独一无二的.
您可以在以下链接中找到更多信息
我实际上发现这很简单,易于实现.
在mongodb _id字段中保留主键.如果您没有在对象中定义它,并且还创建索引以确保性能,Mongodb将使用内部ObjectId值.
但你可以为_id设置自己独特的价值,而Mongodb将使用它而不是为你制作一个.即使您想使用多个字段作为主键,您也可以使用对象:
{ _id : { a : 1, b: 1} }
在创建这些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();
输出如下。
{“ _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'})
WriteResult({“ nInserted”:0,“ writeError”:{“ code”:11000,“ errmsg”:“ E11000重复键错误集合:student.members索引:user_id_1 dup键:{:1.0}”}})
你可以使用简单 db.collectionName.createIndex({urfield:1},{unique:true});