ObjectId 是什么?

一句话,ObjectId 是 MongoDB 文档 _id(主键)的默认类型。

ObjectId 的组成?

ObjectId 使用 12 字节的存储空间,是一个由 24 个十六进制数字组成的字符串 (每个字节可以存储两个十六进制数字)。

{
"_id" : ObjectId("5e7dc34c416808cf7da6679d"),
"name" : "小明",
"sex" : "男"
}

时间戳:从标准纪元开始的时间戳,单位为秒

机器:所在主机的唯一标识符,通常是机器主机名的哈希值

PID:产生 ObjectId 的进程的进程标识符

计数器:自动增加的计数器,确保相同进程同一秒产生的 ObjectId 不一样

ObjectId 的那些事!

大致会按照插入的顺序排列,仅仅是“大致”

由于时间戳在前面,所以 ObjectId 大致会按照插入的顺序排列,但不是绝对的

由于存储时间只精确到秒,同一机器,同一秒,不同进程生成的 ObjectId,PID小的会排在大的前面。

同一进程一秒内生成的 ObjectId 数量是有限的

由于计数器占3个字节,所以可以表示的数量为2^24

Reference

MongoDB权威指南(第2版)

关于MongoDB ObjectId,你应该知道的

关于MongoDB ObjectId的那些事儿的更多相关文章

  1. MongoDB ObjectId

    概述 > db.col.find() { , } { , } { , } { , } 每个文档中都有一个“_id”,她是一个12字节的BSON类型数据,格式如下 56c56dd4ca446fab ...

  2. Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解

    先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...

  3. mongoDB _id:ObjectId("xxxx")详解

     http://blog.haohtml.com/archives/10678   MongoDB ObjectId的优化  

  4. nodeJS+bootstarp+mongodb整一个TODO小例子

    又是一个简单的小玩意儿, 不过有个大玩意儿,就是nosql的mongodb(文件大小:130M),  你要下载一个mongdodb, 去官方网站下载 安装以后在mongodb的命令行目录下执行 mon ...

  5. node连接--MongoDB

    简介: 传统关系类型(ORM:Object-Relational Mapper),MongoDB(ODM:Object Document Mapper); MongoDB是一个面向文档,schme无关 ...

  6. 【转】MongoDB资料汇总专题

    1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...

  7. MongoDB资料汇总专题[转发]

    转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...

  8. mongodb 遇到问题-查询单个需要包装id

    mongodb,get字符查询需要传入特定的包装id才能识别 const ObjectID = require('mongodb').ObjectID exports.queryOne = (req, ...

  9. mongoDB根据_id进行查询

    var ObjectID = require('mongodb').ObjectID; whereStr = {_id:ObjectID(req.body._id)}

随机推荐

  1. MVC之实现基于token的认证

    安装Nuget包 项目中添加包:dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer 添加认证配置 Startup类中添加如 ...

  2. POJ3692 最大点权独立集元素个数

    题意:      n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多. 思路:      简单题目,其实就是在求最大点权独立集元素个数,先 ...

  3. 在 Peach 中使用发布者进行调试

    0x01 桃子平台 桃子平台(Peach)是一款流行的 Fuzz 平台,主要用作二进制文件及网络协议的模糊测试.其原理遵循基本的模糊测试流程,比较有特色的是它依赖用户所编写的 Pit 文件,同时输入的 ...

  4. Win64 驱动内核编程-18.SSDT

    SSDT 学习资料:http://blog.csdn.net/zfdyq0/article/details/26515019 学习资料:WIN64内核编程基础 胡文亮 SSDT(系统服务描述表),刚开 ...

  5. Windows PE 第十三章 PE补丁技术

    PE补丁技术 这章很多东西之前都见过,也单独总结过,比如动态补丁里说的远程代码注入,还有hijack什么的.之前整理过的这里就不细说了,大体说下思路.这里总结一些之前没总结过的东西. 资料中把补丁分为 ...

  6. 机器视觉-EasyDL商品检测-标准版-Demo

    机器视觉-EasyDL商品检测-标准版 功能: EasyDL是百度大脑中的一个定制化训练和服务平台,EasyDL零售版是EasyDL针对零售场景推出的行业版,定制商品检测服务是EasyDL零售版的一项 ...

  7. [CTF]Rabbit加密

    [CTF]Rabbit加密 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_40836553/ar ...

  8. Portswigger web security academy:Clickjacking (UI redressing)

    Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...

  9. Object划分

    Object划分 1.PO(persistantobject)持久对象 PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包 含任何对数据库的操作. 2.DO(Domain ...

  10. thinkphp中常用到的sql操作

    1.清空某表数据: $sql = 'truncate table table_name'; Db::execute($sql );