MongoDB ObjectId
概述
> db.col.find()
{ "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : , "y" : }
{ "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : , "y" : }
{ "_id" : ObjectId("56c5a7beb708aa3d13c61cc7"), "c" : , "m" : }
每个文档中都有一个“_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
MongoDB ObjectId的更多相关文章
- 关于MongoDB ObjectId的那些事儿
ObjectId 是什么? 一句话,ObjectId 是 MongoDB 文档 _id(主键)的默认类型. ObjectId 的组成? ObjectId 使用 12 字节的存储空间,是一个由 24 个 ...
- Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解
先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...
- mongoDB _id:ObjectId("xxxx")详解
http://blog.haohtml.com/archives/10678 MongoDB ObjectId的优化
- nodeJS+bootstarp+mongodb整一个TODO小例子
又是一个简单的小玩意儿, 不过有个大玩意儿,就是nosql的mongodb(文件大小:130M), 你要下载一个mongdodb, 去官方网站下载 安装以后在mongodb的命令行目录下执行 mon ...
- node连接--MongoDB
简介: 传统关系类型(ORM:Object-Relational Mapper),MongoDB(ODM:Object Document Mapper); MongoDB是一个面向文档,schme无关 ...
- 【转】MongoDB资料汇总专题
1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...
- MongoDB资料汇总专题[转发]
转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...
- mongodb 遇到问题-查询单个需要包装id
mongodb,get字符查询需要传入特定的包装id才能识别 const ObjectID = require('mongodb').ObjectID exports.queryOne = (req, ...
- mongoDB根据_id进行查询
var ObjectID = require('mongodb').ObjectID; whereStr = {_id:ObjectID(req.body._id)}
随机推荐
- Scrum会议3(Beta版本)
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- Wikipedia : OIT history
http://en.wikipedia.org/wiki/Order-independent_transparency Order-independent transparency From Wiki ...
- 安装CentOS
1. 用UltraISO,将CentOS写入U盘,然后将两个CentOS iso文件也拷贝到u盘中,由于u盘FAT32的限制,需要调整第一个iso文件的尺寸,剪切到4GB以内即可拷贝进u盘 2. 用u ...
- directX学习系列8 颜色融合(转)
1, Multipass(多通道) 将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计算. 用不同的 ...
- by maintaining a log containing a record of each transaction’s activities - The Commit/Rollback Protocol
Computer Science An Overview _J. Glenn Brookshear _11th Edition Before a transaction is allowed to a ...
- mysql 5.5 5.6配置日志
5.5(linux) [mysqld]#loglog-output=FILEgeneral-log #开启普通日志general-log_file = /tmp/mysqllog/gen.log #设 ...
- mysql 存储过程--- 创建,调用,删除
DELIMITER //CREATE PROCEDURE p_addscore(nums INT,OUT retrows INT)BEGINDECLARE i INT DEFAULT 0;add_lo ...
- NDK编译FreeImage
参考了 以下2篇文章 并作了一小点修改 http://recursify.com/blog/2013/05/25/building-freeimage-for-android http://blog. ...
- 在magento中如何回复客户的评论
magento — 在magento中如何回复客户的评论 发表于 2012 年 8 月 18 日 agento本身是不带 回复评论的功能的,现成的扩展(无论免费的还是商业的)也没找到,那就自己写一个吧 ...
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...