文档章节

Mongo _id 生成和使用

SibylY
 SibylY
发布于 2016/07/14 12:09
字数 297
阅读 66
收藏 0

MongoDB中我们经常会接触到一个自动生成的字段:”_id”,类型为ObjectId。

ObjectId构成

之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。但在分布式环境下,这种方法就不可行了,会产生冲突。为此,MongoDB采用了一个称之为ObjectId的类型来做主键。ObjectId是一个12字节的BSON类型字符串。按照字节顺序,一次代表:

  • 4字节:UNIX时间戳
  • 3字节:表示运行MongoDB的机器
  • 2字节:表示生成此_id的进程
  • 3字节:由一个随机数开始的计数器生成的值

ObjectId获取时间

从ObjectId的构造上来看,内部就嵌入了时间类型。我们肯定可以从中获取时间信息:即插入此文档时的时间。MongoDB对ObjectId对象提供了getTimestamp()方法来获取ObjectId的时间。

> a = new ObjectId()
ObjectId("53102b43bf1044ed8b0ba36b")
> a.getTimestamp()
ISODate("2014-02-28T06:22:59Z")

根据ObjectId按照插入时间排序

MongoDB默认在ObjectId上建立索引,是按照插入时间排序的。我们可以使用此索引进行查询和排序。

© 著作权归作者所有

共有 人打赏支持
SibylY
粉丝 29
博文 438
码字总数 354912
作品 0
海淀
程序员
私信 提问
Mongodb 怎么在nodeJS insert 的时候自动生成当前的时间戳类型

用nodeJS 来使用mongodb , 如 db.collection('abc').insert({_id:1}) 此时 要在mongodb的这个集合里生成当前时间的时间戳类型的数据.类似mongo的 shell 里 new Timestamp() 一样 . 不要nodeJ...

qqqqian
2016/06/21
1K
1
Titan Framework MongoDB深入理解2

在上一篇文章中,我们提到了Titan框架集成的MongoDB功能内部一些比较重要的顶级接口,但我们平时接触到比较多的还是Curd和Finder这两个类,他们是Titan中对MongoDB直接操作的类,下面来对这两...

云季科技
10/22
0
0
fetech-platform/melon-idfactory

melon-idfactory 主键工厂,提供ID生成服务,保证ID的唯一性。 使用motan rpc + restful接口两种调用方式,简单配置,快速部署,使用方便。 目前提供3中ID服务: 提供唯一有序的,不重复的6...

fetech-platform
2017/11/12
0
0
初识MongoDB-用法和用途

用意:记录一下自己学习MongoDB的一些体会. 适合范围, 安装和用法. 一. MongoDB相关 JavaScript统一天下 JavaScript正在快节奏地统一整个web开发流程. JvaScript是WEB前端开发的唯一依靠, 依赖...

清风漫步
2014/02/21
0
0
提供 ID 生成服务的主键工厂 - melon-idfactory

主键工厂,提供ID生成服务,保证ID的唯一性。 使用motan rpc + restful接口两种调用方式,简单配置,快速部署,使用方便。 目前提供3中ID服务: 提供唯一有序的,不重复的64位整数id生成服务...

FutureElement
2017/11/08
222
1

没有更多内容

加载失败,请刷新页面

加载更多

ES5和ES6那些你必须知道的事儿

  ES5和ES6那些你必须知道的事儿      ES5新增的东西      一、数组方法      1、forEach      用途:遍历,循环      对于空数组不会执行回调函数      复制代码...

SEOwhywhy
11分钟前
0
0
转:[windows]DOS批处理添加任务计划

[windows]DOS批处理添加任务计划 博客分类: Windows 转自:http://gwmold.blog.163.com/blog/static/1553319892010117113457232/ 自动创建每周运行一次的计划任务 创建计划任务可用at,sch...

SamXIAO
15分钟前
0
0
redis 问题总结

1:修改内存页大小,linux 默认大小是4k(通过getconf PAGE_SIZE 查看 2:查看内存交换信息,防止使用内存交换 3: sar -n DEV 查看网络状况 4: 修改文件句柄: ulimit -n 65535...

昏鸦
17分钟前
0
0
如何在Rails应用程序中使用Kafka?

背景介绍 有那么一段时间,我们的系统需要用到分布式流式处理和消息系统,而 Apache Kafka 似乎成了我们建立业务关键型应用程序的坚实基础。它可用于很多场景下,比如产品更新管道、订单跟踪...

java菜分享
18分钟前
1
0
C#匿名委托

list自定义排序 //list自定义排序public static List<string> sortList(List<string> m_str,string splitStr) //a b表示列表中的元素{String[] strArray=m_str.ToArray();......

青衣霓裳
28分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部