MongoDB ObjectId

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

概述

复制代码
> db.col.find()
{ "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : 1, "y" : 3 }
{ "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : 2, "y" : 2 }
{ "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : 3, "y" : 1 }
{ "_id" : ObjectId("56c5a7beb708aa3d13c61cc7"), "c" : 3, "m" : 1 }
复制代码

每个文档中都有一个“_id”,她是一个12字节的BSON类型数据,格式如下

56c56dd4ca446fab71e4c38a
  • 前4个字节表示时间戳
  • 接下来的3个字节是机器标识码
  • 紧接的两个字节由进程id组成(PID)
  • 最后三个字节是随机数

MongoDB存储的文档必须有一个的“_id”键,这个键值可以是任意类型,默认的是ObjectId类型对象。

文档的“_id”是唯一的,以确保集合中的文档被唯一标识。

MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个服务器上同步自动增加主键值既费力还费时。(不同机器可以通过机器名区分,同一个机器通过时间戳、随机数、进程id区分)

创建新的ObjectId

> newObjectId_1 = ObjectId()
ObjectId("56c686d264799370c0ef357b")
> newObjectId_2 = ObjectId()
ObjectId("56c686d364799370c0ef357c")

可以用已经生成的id取代自动生成的ObjectId

d = ObjectId("56c686d364799370c0ef357c")
ObjectId("56c686d364799370c0ef357c")

获取文档的时间戳

由于ObjectId的前4位是时间戳,因此不需要为文档特意的保存时间戳,可以用getTimestamp()获取

> ObjectId("56c56dd4ca446fab71e4c38a").getTimestamp()
ISODate("2016-02-18T07:08:04Z")

ObjectId转化为时间戳

> new ObjectId().str
56c68c3b64799370c0ef3581
> ObjectId("56c56dd4ca446fab71e4c38a").str
56c56dd4ca446fab71e4c38a

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/5200399.html,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
存储 NoSQL Unix
.NET生成MongoDB中的主键ObjectId
.NET生成MongoDB中的主键ObjectId
.NET生成MongoDB中的主键ObjectId
|
NoSQL Java MongoDB
Java对MongoDB的ObjectId的序列化问题
MongoDB在不特殊指认的情况下,默认的集合主键是“_id”,类型是ObjectId。ObjectId是一个12字节的BSON类型字符串,包含了UNIX时间戳,机器识别码,进程号,计数值信息。
4437 0
|
NoSQL 索引 MongoDB
MongoDB ObjectId详解及使用
MongoDB中我们经常会接触到一个自动生成的字段:”_id”,类型为ObjectId。 本文详解ObjectId的构成和使用。 ObjectId构成 之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。
1161 0
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
|
存储 NoSQL JavaScript
源码学习:探究MongoDB - ObjectId最新的生成原理
源码学习:探究MongoDB - ObjectId最新的生成原理
|
NoSQL JavaScript MongoDB
Node.js 使用 MongoDB 的 ObjectId 作为查询条件
当往MongoDB中插入一条数据时,会自动生成ObjectId作为数据的主键。那么如何通过ObjectId来做数据的唯一查询呢? 在MongoDB中插入一条数据 在MongoDB中插入一条如下结构的数据: { _id: 5d6a32389c825e24106624e4, title: 'GitHub 上有什么好玩的项目', content: '上个月有水友私信问我,GitHub 上有没有比较好玩的项目可以推荐?我跟他说:"有,过两天我整理一下"。
1921 0
|
NoSQL Java 数据安全/隐私保护