MongoDB ObjectId

概述

> 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
时间: 2024-08-10 15:00:04

MongoDB ObjectId的相关文章

学习笔记 mongodb -- ObjectId构成解析

本文主要记录一下mongo自动生成的ObjectId是怎么构成的. 以一个ObjectId为例:5996b6de8e4f89047cef0fec 总共有24位16进制数构成,也就是12个字节. 其中前四个字节表示当前的时间戳    : 5996b6de 接着三个字节代表你的主机唯一标识:8e4f89 后面两个字节代表进程标识符(PID)  :047c 最后三个字节是一个自增的随机数:ef0fec, 比如一个线程内插入三条数据,生成的ObjectId是:5996bbc68e4f891e98d948

mongoDB _id:ObjectId("xxxx")详解

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

mongodb 初学 目录

mongodb 初学 索引 啦啦啦 MongoDB 教程 NoSQL 简介 MongoDB 简介 Windows 平台安装 MongoDB Linux平台安装MongoDB mongodb 在 Ubuntu系统上的安装及卸载 Mongodb启动命令mongod参数说明 Mac OSX 平台安装 MongoDB MongoDB 概念解析 MongoDB - 连接 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB 插入文档 MongoDB 更新文档 MongoDB 删除文档 M

mongoDB 命令

(1)use ×× 进去某表 :例如:use test switched to test (2)表统计 db.stats() /** @jackhe* 文件来自:https://docs.mongodb.com/getting-started/node/query/*/var MongoClient = require('mongodb').MongoClient;var assert = require('assert');var ObjectId = require('mongodb').O

MongoDB资料汇总(转)

原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给Python程序员的MongoDB介绍 又一篇给Python程序员的

node之mongodb的DAO

DAO就是数据库的提供方法再封装一层. mongodb-DAO: var mongoClient=require("mongodb").MongoClient; //数据库连接 var setting=require("../settings.js"); //连接数据库方法 function _connectDB(callback){ var url=setting.dburl; mongoClient.connect(url,function(err,db){ i

mongodb做一个简单的注册登录效果

作为一个初学者,做这个例子的时候我也是遇到了很多问题,在查看了一些大牛的解答,终于实现了这个简单的效果,下面我来分享这个源代码,以及其中我所遇到的问题 这是在nodejs环境下作的一个实例,用到了jade,express,mongodb这几个主要的模块 layout.jade文件 doctype 5html head title Mongodb example body h1 my first mongodb app hr block content index.jade文件 extends .

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

又是一个简单的小玩意儿, 不过有个大玩意儿,就是nosql的mongodb(文件大小:130M),  你要下载一个mongdodb, 去官方网站下载 安装以后在mongodb的命令行目录下执行 mongod --dbpath=c:\mongodbInfo\ --port 27017 这个命令会在C盘新建一个叫做mongodInfo的目录用来保存mongodb的数据; nodeJS要安装mongodb的依赖库, 通过npm进行安装 npm install mongodb mongodb的API可以

nodejs + mongodb + ejs + express 实现页面展示 connection

(1)mongo启动服务,请查看 http://www.cnblogs.com/he0xff/p/5820575.html (2)新建 某个文件:js 例如:hello.js 安装 npm install ejs npm install express npm install mongodb npm install monk 新建某个 view层(看你hello.js中的定义) /** @jackhe* 文件来自:https://docs.mongodb.com/getting-started/