...

Callwoola

大雄'blog

Home 主页 Blog 博客 Tag标签 GitHub开源 about me关于我


mongodb objectId 详解

BSON

我们先来看看什么是BSON。 BSON简称二进制的JSON,是JSON的二进制序列化编码格式, 像JSON一样,BSON支持文档数组,BSON支持二进制压缩格式,像Protocol Buffers, 但是BSON比ProtocolBuffers更加自由,无模式,所以BSON支持更加高级复杂的格式, 在空间利用方面更加高效。BSON是被设计成有如下三个特性:

ObjectId

之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。 但在分布式环境下,这种方法就不可行了,会产生冲突。

为此,MongoDB采用了一个称之为ObjectId的类型来做主键。

手动制作一个 Object ID

// 使用Date的字符串构造方法生成日期,然后使用Date对象的getTime获取毫秒数,再除以1000得到标准时间戳

a = new Date("2012-12-12 00:00:00").getTime()/1000
// 1355241600
// 获取时间戳的标准十六进制表示 
a = a.toString(16) 
// 50c75880
// 在后面填补16个0 
a = a + new Array(17).join("0") 
50c758800000000000000000
// 使用24个字符串构造ObjectId
b = new ObjectId(a) 
ObjectId("50c758800000000000000000")
// 获取时间以验证 
b.getTimestamp() 
ISODate("2012-12-11T16:00:00Z")

reference: protocal buffers 文档 https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

  • 文档信息:
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 发表日期: 2017-07-1910:20:18+0800
  • 更多内容:
  • Feed订阅:
相关内容:

disqus评论区:

0