MongoDB 对象主键 ObjectId

常规主键

生成

> 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 })
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容