`
ppxieppp
  • 浏览: 50703 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

mongoDB ObiectID详解

阅读更多

1.组成

0

1

2

3

4

5

6

7

8

9

10

11

时间戳

机器ID

PID

计数器


  • 时间戳. 4字节unix时间戳.
  • 机器ID. 主机名md5产生的hash的前三个字节, 或者mac,网络地址,虚拟主机地址

  • Pid. 2自己的进程(或线程)id.

  • 计数器. 3字节的计数器.

2.如何合理使用ObjectId
从objectid生成规则看出,objectid包含了时间信息,大多数情形下,该时间可代表业务处理时间(严格事务的情形下,也不适合采用mongo),如果再加上时间字段,有点浪费空间,如果采用objectid,如何取时间呢?
以一个ObjectId为例
> ObjectId("50751e90c2f1d0081ca4f59a").getTimestamp()
ISODate("2012-10-10T07:06:56Z")
如何表示时间段呢?如大于某个时间:
> secs=1350316800
1350316800
> hexSecs = secs.toString(16)
507c3300
> id = ObjectId(hexSecs+"0000000000000000")
ObjectId("507c33000000000000000000")
> db.user.find({"_id":{$gt:id}})
根据时间戳换后面拼0,就可以比较了。
3.不适用ObjectId,自定义_id
比如使用业务中的唯一id或者自己实现自增id来代替默认的ObjectId
自增可以用以下方法来实现:
mongos> function counter(name) {
... var ret = db.counters.findAndModify({query:{_id:name}, update:{$inc : {next:1}}, "new":true, upsert:true});
... // ret == { "_id" : "users", "next" : 1 }
... return ret.next;
... }
mongos>
mongos> db.users.insert({_id:counter("users"), name:"dbchu"})
mongos> db.users.find()
{ "_id" : 1, "name" : "dbchu" }
mongos> db.users.insert({_id:counter("users"), name:"ccj"})
mongos> db.users.find()
{ "_id" : 1, "name" : "dbchu" }
{ "_id" : 2, "name" : "ccj" }

参考:

http://www.mongodb.org/display/DOCS/Object+IDs

http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs

http://www.kchodorow.com/blog/2011/12/20/querying-for-timestamps-using-objectids/


本文链接: http://taodba.com/2012/10/16/657/mongodb-objectid | The Tao of DBA

分享到:
评论

相关推荐

    MongoDB详解加实例

    MongoDB详解加实例 MongoDB是一款高性能、开源、无模式的文档型数据库,它属于NoSQL数据库的一种。MongoDB的设计理念是为了解决大规模数据存储问题,尤其适用于处理大量非结构化或半结构化数据。在本文中,我们将...

    MongoDB之查询详解

    ### MongoDB查询详解 #### 一、引言 在NoSQL数据库的世界里,MongoDB因其灵活的数据模型、高性能和可扩展性而备受青睐。查询作为数据库操作中最基础也是最重要的功能之一,在MongoDB中同样有着丰富的语法支持。...

    MongoDB之conf配置文件详解

    MongoDB之conf配置文件详解 MongoDB的配置文件是服务器的核心组件之一,它控制着MongoDB服务器的各种设置和行为。在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库...

    MongoDB视频教程详解

    教程名称:MongoDB 视频教程详解 课程目录:【】1-1mongoDB现状【】1-2课程简介【】1-3mongoDB相关网站介绍【】1-4关于数据库【】1-5为什么要选择mongoDB【】2-1运行环境简介【】2-2编译mongoDB文件【】2-3搭建简单...

    linux 安装mongodb详解

    在Linux系统上安装MongoDB是一项基础且至关重要的任务,尤其对于那些依赖于这款高效文档数据库的Web服务。本文将详细讲解如何在CentOS 6.5环境下安装MongoDB及其PHP扩展。 首先,我们需要确保系统已经更新到最新...

    mongodb 入门详解

    mongodb 基础知识入门详解:优,缺点,常用命令,数据基础操作解析

    Mongodb基础知识详解(值得珍藏).pdf

    MongoDB 是一个高性能的NoSQL数据库,以分布式文件存储为基础,提供灵活的数据模型和高效的查询操作。MongoDB 不同于传统的关系型数据库,它采用面向集合的存储方式,支持无模式的数据模型,允许数据自由组织,这...

    springboot整合mongodb详解

    SpringBoot整合MongoDB详解 MongoDB是一款高性能、无模式的分布式文档型数据库,适用于处理大量数据的场景,尤其适合处理半结构化或非结构化的数据。SpringBoot是Spring框架的一个轻量级模块,旨在简化Spring应用的...

    mongodb安装详解

    ### MongoDB 安装与配置详解 #### 一、前言 MongoDB 是一款非常流行的开源文档型数据库系统,因其灵活性高、易于扩展等特性而受到广大开发者的喜爱。本文将详细介绍如何在 Linux 系统上安装和配置 MongoDB,并提供...

    MongoDB 游标详解及实例代码

    MongoDB 游标详解 MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针,可以定位到某条记录,在MongoDB中,则是文档。因此在mongoDB中游标也有定义,声明, 打开,读取,关闭这么个过程...

    Spring Boot使用MongoDB详解

    ### Spring Boot 使用 MongoDB 详解 #### 一、前言 随着大数据时代的发展,NoSQL 数据库因其灵活性和高性能成为开发者的新宠。MongoDB 作为 NoSQL 数据库中的佼佼者,凭借其面向文档的存储方式、高效查询性能及...

    MongoDB学习视频详解百度网盘下载.txt

    MongoDB学习视频,从入门到精通,适合开发和运维学习下载

    mongoDB-入门详解

    MongoDB 是一个流行的开源、分布式、面向文档的数据库系统,属于 NoSQL 数据库的一种。它的设计目标是为了处理大规模数据,并提供高性能、高可用性和可扩展性。MongoDB 的名称来源于 "humongous",意指它能处理大量...

    深入云计算:MongoDB管理与开发实战详解 源代码

    本资源“深入云计算:MongoDB管理与开发实战详解 源代码”旨在为开发者和管理员提供全面的MongoDB知识,通过源代码实例帮助读者深入理解其核心概念和实践技巧。 在云计算领域,MongoDB常作为NoSQL数据库解决方案,...

    mongodb基础详解

    本ppt主要讲解mongodb的一些基础知识的介绍,对应初学者有很好的引导。同时对应了解nosql也有一定的帮助

    MongoDB详解,MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

    ### MongoDB详解:库、集合、文档(操作 + 演示 + 注意事项) #### MongoDB概述 MongoDB是一款基于分布式文件存储的数据库系统,由C++语言编写而成,旨在为Web应用提供可扩展且高性能的数据存储解决方案。作为一种...

    高可用的MongoDB集群详解

    MongoDB是一种高性能、开源、无固定模式的文档型数据库,由C++编写。它结合了键值对存储的高速度和传统RDBMS的灵活性,适用于处理大量的实时数据。MongoDB的特点包括: 1. **面向集合存储**:MongoDB允许以集合的...

    Windows上安装MongoDB:完整步骤详解.pdf

    MongoDB是一种流行的开源NoSQL数据库,它以JSON格式存储数据,特别适合处理大规模非结构化和半结构化数据。在Windows操作系统上安装MongoDB需要遵循一系列步骤,这通常包括下载安装包、运行安装向导、配置数据库服务...

Global site tag (gtag.js) - Google Analytics