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)}
随机推荐
- Ajax解决IE浏览器兼容问题
ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享. 因为Context ...
- discuz ucenter通信失败
一般出现时2个问题,一个是目录出问题,改成你现在的目录就行 二个就是通信密钥不对,应该和config文件下的config_ucenter.php文件里的UC_KEY一致
- [kuangbin带你飞]专题八 生成树 - 次小生成树部分
百度了好多自学到了次小生成树 理解后其实也很简单 求最小生成树的办法目前遇到了两种 1 prim 记录下两点之间连线中的最长段 F[i][k] 之后枚举两点 若两点之间存在没有在最小生成树中的边 那么 ...
- FastDFS 上传文件
[root@GW1 client]# ./fdfs_test ../conf/client.conf upload /home/tmp/1009.png This is FastDFS client ...
- service mongod start start: Unknown job: mongod问题
终于解决了这个异常蛋疼的问题,当安装完毕mongodb的时候,执行: root@ubuntu:/usr/local# service mongod start 出现: start: Unknown j ...
- BKDRhash实现
参考了一些有关于哈希算法的博客,里面都有提到BKDR哈希算法,在博客:各种字符串Hash函数中有对各种hash算法进行测试,测试关于哈希冲突,以及散列的质量,得到的结果可以参考以上博文. BKDRha ...
- ThinkPHP的cookide保存二维数组的方法
ThinkPHP中的cookie是不支持二维数组的. 如果要保存二维数组.只能特殊处理 $data[263] = array('gid'=>263,'num'=>1); $data[266 ...
- Yii源码阅读笔记(十六)
Model类,集中整个应用的数据和业务逻辑—— /** * Generates a user friendly attribute label based on the give attribute ...
- JavaScript 数组详解(转)
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只 ...
- 【Demo】微信上墙
先看看微信墙效果图 使用简单说明 关于微信公众号 回复 "上墙",点击授权文章进行授权 回复"#上墙内容" 即可发表上墙消息了 查看微信墙列表,点击这里 原文地 ...