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)}
随机推荐
- python aes加解密
python AES加密解密 python AES 双向对称加密解密 Python中进行Base64编码和解码 # encoding:utf-8 import base64 from Crypto.C ...
- 升级xcode6和ios8后,unity遇到的一些小问题
升级最新的Xocde6后,如果不是最新版本的unity,虽然也可以也可以正常的build,但如果想通过unity连真机进行profile的话,就会在xocde中报错,这个的主要原因是unity的配置里 ...
- MYSQL PASSWORD()
https://www.pythian.com/blog/hashing-algorithm-in-mysql-password-2/ SELECT PASSWORD ("this_is_a ...
- 错误记录--The import XXX cannot be resolved
错误:The import XXX cannot be resolved弄了好久,import类的都没问题,但就是报错.选择project --> clean后,OK.如果还不行,删掉全部imp ...
- 浅谈 举家搬迁静态文件到CDN
由于七牛CDN最近做活动,对于标准用户可以免费使用如下优惠 10 GB 存储空间 10 G/月 下载流量 10 万次/月 PUT/DELETE 请求 100 万次/月 GET 请求 以上这些指标直接就 ...
- 为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
http://blog.csdn.net/caryaliu/article/details/49284185 需要在被观察的属性所在的类里面实现一些方法,对开发者不友好,一般不建议使用,这里mark一 ...
- 记录下 QT Linux 静态编译遇到的坑
Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...
- C++线程池的实现(二)
参考文章:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspx // CThread.h #ifndef __MY_THR ...
- C# 判断字符串是否为日期格式
判断字符串内容是否为日期格式,并返回一个日期变量 string str; DateTime dtTime; if (DateTime.TryParse(str, out dtTime)) { //st ...
- JSON格式解析和libjson使用简介(关于cjson的使用示例)
JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...