MongoDB管理与开发精要《红丸出品》4.5 _id key

----------------------------------------------------------------------------------------------------------------
《MongoDB管理与开发精要》、《Redis实战》作者
@CD红丸                    http://weibo.com/u/2446082491
----------------------------------------------------------------------------------------------------------------

4.5 _id key

MongoDB支持的数据类型中,_id是其自有产物,下面对其做些简单的介绍。

 

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

 

_id key举例说明 :

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

> db.c1.find()

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

这里多出了一个类型为ObjectIdkey ,在插入时并没有指定,这有点类似Oraclerowid的信息,属于自动生成的。

 

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

> db.c1.find()

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

{ "_id" : 3, "name" : "Bill", "age" : 55 }

 

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

> db.c1.insert({_id:3, name:"Bill_new", age:55})

E11000 duplicate key error index: test.c1.$_id_ dup key: { : 3.0 }

因为前面已经插入了一条_id=3的记录,所以再插入相同的文档就不允许了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值