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. 命令行运行py文件报错

    起因 今天用ubuntu 终端运行py文件报了个错,找不到模块? 我切换回pycharm中运行,运行一切正常 解决 在报错模块中,插入绝对路径 import sys sys.path.append(' ...

  2. hdu3117 斐波那契前后4位

    题意:       求斐波那契的前后4位,n <= 10^8. 思路:       至于前四位,和hdu1568的求法一样:       http://blog.csdn.net/u013761 ...

  3. DVWA之DOM XSS(DOM型跨站脚本攻击)

    目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...

  4. drozer源码学习二:info+scanner

    Information: datetime:    输出android中当前日期:time. setToNow() deviceinfo:   输出设备信息 deviceinfo做了三件事: 1.  ...

  5. POJ2446 模板盖格子 简单二分匹配

    题意:       给你一个n*m的格子,有的格子上有坑,然后让你用1*2的东西去覆盖所有没有坑的格子,不能重叠,坑上也不能放东西覆盖,问是否能成功. 思路:        简单题目,每个格子和四周的 ...

  6. 分子动力学模拟软件VMD的安装与使用

    技术背景 在分子动力学模拟过程中会遇到一些拓扑结构非常复杂的分子模型,所谓的复杂不仅仅是包含众多的原子,还有各种原子之间的成键关系与成键类型等.这时候就非常能够体现一个好的可视化软件的重要性了,这里我 ...

  7. 【python】Leetcode每日一题-删除排序链表中的重复元素

    [python]Leetcode每日一题-删除排序链表中的重复元素 [题目描述] 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 . 返回同 ...

  8. Maven执行Install命令时跳过测试

    1. 在pom.xml中添加插件 <!-- 跳过单元测试,不然打包的时候会因为加载不了application.yaml报错 --> <plugin> <groupId&g ...

  9. SQL注入,PreparedStatement和Statement

    代码区 还是一个工具类 代码: package cn.itcats.jdbc; import java.sql.Connection;import java.sql.DriverManager;imp ...

  10. 使用TK框架中selectByPrimaryKey

    使用TK框架中selectByPrimaryKey(Object key),需要注意要在entity里注明哪个字段是主键,否则会不知道哪个是PrimaryKey会随机一个字段就报错. 如下: 引入 i ...