文档章节

Mongo _id 生成和使用

SibylY
 SibylY
发布于 2016/07/14 12:09
字数 297
阅读 47
收藏 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
博文 436
码字总数 344013
作品 0
海淀
程序员
Mongodb 怎么在nodeJS insert 的时候自动生成当前的时间戳类型

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

qqqqian
2016/06/21
1K
1
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
实战mongodb3.06 Relica Sets+sharding集群

实战mongodb3.06 Relica Sets+sharding集群 前 言 MongoDB 的Sharding机制解决了海量存储和动态扩容的问题,但离实际生产环境所需要的高可靠、高可用还有些距离,例如Shard Server的单点故障...

jxzhfei
2015/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring加载properties文件的两种方式

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修...

架构师springboot
27分钟前
0
0
分布式事务,原来可以这么玩?

多个数据要同时操作,如何保证数据的完整性,以及一致性? 答 : 事务 ,是常见的做法。 举个栗子: 用户下了一个订单,需要修改 余额表 , 订单 表 , 流水 表 ,于是会有类似的伪代码: st...

微笑向暖wx
30分钟前
2
0
IE6兼容PNG32图片显示PNG8图片

IE6并不是不支持PNG图片,只是不支持半透明通道。 是支持PNG8色表引索全透明的。 以往都是通过滤镜或统统使用PNG8实现兼容。 但是我发现twitter的png图标可以在chrome中显示png32,在IE6显示...

linsk1998
42分钟前
0
0
linux运维需要掌握的基础知识

踏入linux运维工程师这一职业,其实有很多工具技能需要掌握,下面我来给大家一一介绍。 1、shell脚本和另一个脚本语言,shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些...

linuxprobe16
43分钟前
0
0
《netty入门与实战》笔记-03:数据传输载体 ByteBuf 介绍

ByteBuf结构 首先,我们先来了解一下 ByteBuf 的结构 以上就是一个 ByteBuf 的结构图,从上面这幅图可以看到: ByteBuf 是一个字节容器,容器里面的的数据分为三个部分,第一个部分是已经丢弃...

Funcy1122
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部