代码之家  ›  专栏  ›  技术社区  ›  Tauquir

如何在MongoDB中设置主键?

  •  60
  • Tauquir  · 技术社区  · 15 年前

    我想把 . 我正在使用 MongoDB 作为我的NoSQL。

    8 回复  |  直到 12 年前
        1
  •  92
  •   Sinan    8 年前

    _id 字段是为mongodb中的主键保留的,并且应该是唯一的值。如果你不设定任何 _身份证

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

    希望有帮助。

        2
  •  25
  •   Aditya Vyas-Lakhan user1796260    9 年前

    另一种方法是创造 Indexes 并确保它们是独一无二的。

    link

    我发现这很简单,也很容易实现。

        3
  •  17
  •   Ali    9 年前

    在mongodb中,id字段是为主键保留的。如果没有在对象中定义内部ObjectId值,Mongodb将使用该值,并创建索引以确保性能。

    但是你可以为id设置自己的唯一值,Mongodb将使用它而不是为你创建一个。即使要使用多个字段作为主键,也可以使用对象:

    { _id : { a : 1, b: 1} }
    

        4
  •  14
  •   Sameer    5 年前

    如果你像RDBMS那样思考,你就不能创建主键。默认主键是\u 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();
    

    输出如下。

    {“\u id”:ObjectId(“577f9cecd71d71fa1fb6f43a”),“user\u id”:1,“name”:“nanhe”}

    {“\u id”:ObjectId(“577f9d02d71d71fa1fb6f43b”),“name”:“kumar”}

    当您尝试插入相同的用户id时,mongodb抛出一个写入错误。

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

    “未插入”:0, “写入错误”:{ “errmsg”:“E11000重复密钥错误集合:student.members索引:user\u id\u 1 dup key:{:1.0}” } })

        5
  •  11
  •   Soviut    5 年前

    简单的你可以使用

    db.collectionName.createIndex({urfield:1},{unique:true});
    
        6
  •  6
  •   Lakshmikant Deshpande    7 年前

    _id (这是为MongoDB中的主键保留的)字段。
    i、 如果我想的话 employee_id 在MongoDB中创建文档时作为主键;分配 _身份证 值与 员工id .

        8
  •  3
  •   Menuka Ishan    8 年前

    这是创建主键的语法

    数据库。<集合>。创建索引(<键和索引类型规范>{

    假设我们的数据库有一个名为 学生 它的文档有一个名为 学号

    db.student.createIndex({student_id:1},{unique:true})
    

    你可以检查一下 学生 收藏。

    欲了解更多信息,请参阅本文档 https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index

        9
  •  2
  •   Tincho825    5 年前

    如果你在Meteor上使用Mongo,你可以使用 _ensureIndex :

    CollectionName._ensureIndex({field:1 }, {unique: true});