MongoDB 对象主键 ObjectId

摘要:
˃db.accounts.insert({_id:{"balance":200,"name":"david"},"name":"charlie","balance":500})WriteResult({"nInserted":1})

常规主键

生成

> ObjectId()
ObjectId("5d7f4c36a7b5867462dee50e")

提取生成的时间

> ObjectId("5d7f4c36a7b5867462dee50e").getTimestamp()
ISODate("2019-09-16T08:47:50Z")

复合主键

主键也可以使用对象来表示,即复合主键。

创建复合主键文档

> db.accounts.insert({ _id:{ "name" : "david", "balance" : 200 },"name" : "charlie", "balance" : 500 })
WriteResult({ "nInserted" : 1 })

复合主键文档ID重复性判断

> db.accounts.insert({ _id:{ "name" : "david", "balance" : 200 },"name" : "charlie", "balance" : 500 })
WriteResult({
 "nInserted" : 0,
 "writeError" : {
  "code" : 11000,
  "errmsg" : "E11000 duplicate key error collection: test.accounts index: _id_ dup key: { _id: { name: "david", balance: 200.0 } }"
 }
})
# 复合主键对象key的顺序、value值、value值的类型等完全一样,方认为复合主键冲突。
> db.accounts.insert({ _id:{ "balance" : 200, "name" : "david" },"name" : "charlie", "balance" : 500 })
WriteResult({ "nInserted" : 1 })

免责声明:文章转载自《MongoDB 对象主键 ObjectId》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux ERRNO任务管理器是灰色的下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

centos7 启动mongodb时报错ERROR: child process failed, exited with error number 1

当部署好的mongodb,之后启动时报错如图所示: ERROR: child process failed, exited with error number 1 这时你要看一下,你新建的配置文件,里面的配置是否写对了,如果没有问题的话,就没有事了,当然不是这一种情况到时报错的,有另外一种那就是 看看配置文件,新建的日志目录“是不是”建成目录了?????...

Mongodb联合查询

Mongodb使用联合查询的重点需要添加@DBref  这样的话不会将整个文档保存,只会保存关联集合的id package com.java.web; import java.util.List; import org.mongodb.framework.pojo.GeneralBean; import org.springframework.data...

【Mongodb】用户和认证 权限总结

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!   在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admi...

MongoDB查询(数组、内嵌文档)

转自:http://blog.csdn.net/congcong68/article/details/46919227 一、简介 我们上一篇介绍了db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段,我们今天介绍了对数组和内嵌文档的查询操作,尤其是对$elemMatch 同样可以用在...

MongoDB批量更新和批量插入的方式

最近,在调试代码中发现向MongoDB插入或者更新文档记录时若是多条的话都是采用for循环操作的,这样的处理方式会造成数据操作耗时,不符合批量处理的原则;对此,个人整理了一下有关MongoDB的批量更新和批量插入的操作流程,如下所示: @Autowired privateMongoTemplate mongoTemplate; (1)批量插入示例如下: L...

MongoDB(8)- 文档删除操作

删除方法 db.collection.deleteOne() 删除单条文档 db.collection.deleteMany() 删除多条文档 db.collection.remove() 删除单条或多条文档 deleteOne() 语法格式 db.collection.deleteOne( <filter>, {...