ObjectId介绍

在MongoDB中,文档(document)在集合(collection)中的存储需要一个唯一的_id字段作为主键。这个_id默认使用ObjectId来定义,因为ObjectId定义的足够短小,并尽最大可能的保持唯一性,同时能被快速的生成。

ObjectId 是一个 12 Bytes 的 BSON 类型,其包含:

  1. 4 Bytes 自纪元时间开始的秒数
  2. 3 Bytes 机器描述符
  3. 2 Bytes 进程ID
  4. 3 Bytes 随机数

从定义可以看出,在同一秒内,在不同的机器上相同进程ID条件下,非常有可能生成相同的ObjectId。
同时可以根据定义判断出,在给定条件下,ObjectId本身即可描述生成的时间顺序

ObjectId的存储使用Byte数组,而其展现需将Byte数组转换成字符串进行显示,所以通常我们看到的ObjectId都类似于:

ObjectId("507f191e810c19729de860ea")

C#定义ObjectId类

View Code

C#实现ObjectId的生成器

View Code

使用举例

 1   class Program
 2   {
 3     static void Main(string[] args)
 4     {
 5       Console.ForegroundColor = ConsoleColor.Red;
 6
 7       ObjectId emptyOid = ObjectId.Empty;
 8       Console.WriteLine(emptyOid);
 9
10       Console.WriteLine();
11       Console.ForegroundColor = ConsoleColor.Green;
12
13       for (int i = 0; i < 10; i++)
14       {
15         ObjectId oid = ObjectId.NewObjectId();
16         Console.WriteLine(oid);
17       }
18
19       Console.WriteLine();
20       Console.ForegroundColor = ConsoleColor.Blue;
21
22       ObjectId existingOid;
23       ObjectId.TryParse("507f191e810c19729de860ea", out existingOid);
24       Console.WriteLine(existingOid);
25
26       Console.ReadKey();
27     }
28   }

本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/archive/2013/04/24/csharp_generate_mongodb_objectid.html,如需转载请自行联系原作者

C# 生成 MongoDB 中的 ObjectId相关推荐

  1. MongoDB中_id(ObjectId)生成

    MongoDB 中我们经常会接触到一个自动生成的字段:"_id",类型为ObjectId. 之前我们使用MySQL等关系型数据库时,主键都是设置成自增的.但在分布式环境下,这种方法 ...

  2. mysql objectid_在mysql中使用MongoDB中的ObjectId

    其实很简单.您只需要使用 mongodb 像平常一样打包和声明实体. 首先,安装mongodb依赖项: yarn add mongodb yarn add @types/mongodb 然后,声明你的 ...

  3. MongoDB中的_id和ObjectId

    _id和ObjectId MongoDB中存储的文档必须有一个"_id"键.这个键的值可以是任何类型的,默认是个ObjectId对象. 在一个集合里面,每个集合都有唯一的" ...

  4. mysql objectid_MongoDB中_id(ObjectId)生成

    MongoDB中我们经常会接触到一个自动生成的字段:"_id",类型为ObjectId. 之前我们使用MySQL等关系型数据库时,主键都是设置成自增的.但在分布式环境下,这种方法就 ...

  5. mongoDb中_id和ObjectId详细说明

    ObjectId使用12字节的存储空间,是一个由24个16进制数字组成的字符串(每个字节可以存储两个16进制数字). 说明: 12字节(每个字节用2个16位的组成), 因此,总共24个16位的数字. ...

  6. php生成objectid,python根据时间生成mongodb的ObjectId的方法

    本文实例讲述了python根据时间生成mongodb的ObjectId的方法.分享给大家供大家参考.具体分析如下: mongodb的_id为ObjectId类型,ObjectId内是包含时间戳信息的, ...

  7. mongoDB中的数据类型

    Date mongo shell中提供各式各样的返回日期类型的方法,例如字符串类型或者Date对象类型: Date() 返回当前的日期字符串: new Date() 返回使用ISODate()包装的D ...

  8. MongoDB中的索引操作

    本文来说下MongoDB中的索引操作 文章目录 概述 createIndex() 方法 语法 createIndex() 可选参数 索引操作 测试实例 本文小结 概述 索引通常能够极大的提高查询的效率 ...

  9. 如何使用MongoDB Go驱动程序在MongoDB中使用Go

    The author selected the Free Software Foundation to receive a donation as part of the Write for DOna ...

最新文章

  1. 你可能需要了解一下的中台
  2. 为什么当代人越来越不快乐?
  3. leetcode 第 216 场周赛 整理
  4. 标记分布学习与标记增强
  5. Android 那些年,处理getActivity()为null的日子
  6. 夺命雷公狗---Smarty NO:19 html_options函数
  7. TCP/IP及内核参数优化调优(转)
  8. 使用Github官方提供的gitignore过滤Git提交的文件
  9. linux磁盘管fdisk,Linux 磁盘分区工具和挂载,fdisk管理分区详解
  10. 玩Mega8 智能充电器-12. 终于实现-dV检测(转)
  11. 【浅墨著作】《逐梦旅程:Windows游戏编程之从零开始》勘误配套源代码下载...
  12. IOCCC大赛代码分析笔记
  13. requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题
  14. python中get函数是什么意思_详解python中get函数的用法(附代码)_后端开发
  15. 云顶之弈机器人怎么拉人_云顶之弈机器人阵容怎么玩_云顶之弈机器人阵容玩法攻略_玩游戏网...
  16. 最全面的常用Delphi第三方控件汇总—报表、图表、界面、数据库等
  17. sourcetree 中文版
  18. 微机原理——基础知识及计算机基本组成
  19. ife2015spring-task0001笔记总结
  20. 计算dpi公式及各主流分辨率介绍

热门文章

  1. 基于eclipse swt做java浏览器内嵌等功能
  2. html5 子标题栏,HTML5 建构主义标题栏页面模板
  3. b类 蚂蚁金服_【面经】超硬核面经,已拿蚂蚁金服Offer!!
  4. git idea 本地历史版本回滚_如何为IDEA项目创建GitHub存储库和本地Git存储库
  5. mysql表的视图怎么建立_MySQL如何创建视图
  6. javascript乘法和加法_Web前端:JavaScript中的NaN是什么?
  7. android 判断滑动方向,H5触摸事件判断滑动方向
  8. (4) 百度2011研发工程师笔试卷
  9. Node.js 极简笔记
  10. XX System Test Plan