• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    Mongodb下_id key

    Posted by 撒得一地 on 2016年3月21日 in Mongodb教程
    国外稳定加速器推荐    Express | Vypr

    MongoDb支持的数据库类型中,_id是其自有产物。下面简单介绍下_id key。

    存储在MongoDB集合中的每个文档(document)都有一个默认的主键_id,这个主键名称是固定的,它可以是MongoDB支持的任何数据类型,默认是ObjectId。在关系数据库schema设计中,主键大多是数值型的,比如常用的int和long,并且更通常的是主键的取值由数据库自增获得,这种主键数值的有序性有时也表明了某种逻辑。反观MongoDB,它在设计之初就定位于分布式存储系统,所以它原生的不支持自增主键。

    _id key举例说明:

    当我们在往一个集合中写入一条文档时,系统会自动生成一个名为_id的key。如:

    >db.person.insert({name:"psz",age:18})
    WriteResult({"nInserted":1})
    >db.person.find()
    { "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "psz", "age" : 18 }
    

    这里多出了一个类型为ObjectId的key,在插入时并没有指定,属于自动生成的。

    在MongoDB中,每一个集合都必须有一个叫做_id的字段,字段类型默认是ObjectId,换句话说,字段类型可以不是ObjectId,例如:

    >db.person.insert({_id:123,name:"psz2",age:19})
    WriteResult({"nInserted":1})
    >db.person.find()
    { "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "psz", "age" : 18 }
    {_"_id" : 123 , name : "psz2" , age : 19}
    

    虽然_id的类型可以自由指定,但是在同一个集合中必须唯一,如果插入重复的值的话,系统将会抛出异常。如:

    > db.person.insert({_id:1233, name:"psz3", age:19})
    WriteResult({
        "nInserted":0,
        "WriteError":{
             "code":1000
             "errmsg":"E11000 duplicate key error index: test.person.$_id_ dup key: { : 123.0 }"
    
         }
    })
    

    因为之前已经插入一条_id=3的记录,所以再插入相同_id的文档就报错了。

    总结

    _id key可以用户分配,也可以由MongoDB自动分配,一般采用自动分配。

    如果未使用_id作为分片key,则应用程序或客户端层要负责保证_id为唯一的,对于分配存在重复_id会有问题。

    更新一个document 不会造成_ID被修改。

    本文地址://www.cfage.com/1732.html,转载请注明。

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    4 + 3 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 澳门赌博网站 北京赛车pk10怎么压钱 快乐8登录入口 足彩 福彩2017085期六码复式 pk10两期必中大小单双 全天北京pk10计划团队 江西多乐彩投注技巧 中彩网3d试机号 快乐扑克组4 中国福利彩票老时时彩开奖号码 江西新时时彩论坛 七乐彩杀号近20期杀号 双色球最准确预测100% 新时时彩豹子遗漏 排列5走势图