C# 生成 MongoDB 中的 ObjectId

简介:

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,如需转载请自行联系原作者

目录
相关文章
|
存储 NoSQL Unix
.NET生成MongoDB中的主键ObjectId
.NET生成MongoDB中的主键ObjectId
429 5
.NET生成MongoDB中的主键ObjectId
|
NoSQL Java MongoDB
Java对MongoDB的ObjectId的序列化问题
MongoDB在不特殊指认的情况下,默认的集合主键是“_id”,类型是ObjectId。ObjectId是一个12字节的BSON类型字符串,包含了UNIX时间戳,机器识别码,进程号,计数值信息。
5065 0
|
NoSQL 索引 MongoDB
MongoDB ObjectId详解及使用
MongoDB中我们经常会接触到一个自动生成的字段:”_id”,类型为ObjectId。 本文详解ObjectId的构成和使用。 ObjectId构成 之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。
1592 0
|
NoSQL C# 数据库
使用c#对MongoDB进行查询(1)
1.BsonDocument对象     在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型。可以使用BsonDocument对不规则数据进行操作,这个类型继承了IEnumberable类,也就是说又将...
2701 0
|
存储 NoSQL MongoDB
MongoDB ObjectId
10月更文挑战第22天
426 2
|
NoSQL MongoDB 数据库
深入探究MongoDB的ObjectId:唯一性、顺序性与应用指南
深入探究MongoDB的ObjectId:唯一性、顺序性与应用指南
1569 0
|
存储 NoSQL JavaScript
源码学习:探究MongoDB - ObjectId最新的生成原理
源码学习:探究MongoDB - ObjectId最新的生成原理
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
|
NoSQL Redis CDN
分布式服务器框架之搭建C#+MongoDB+Redis初步
WebAccount站点主要干的事儿是下发 服务器状态信息,这个服务器会和WorldServer建立连接,等所有的GameServer初始化完成之后会同步给WorldServer,WorldServer同步给账号服务器站点,然后账号站点等待玩家请求。
|
NoSQL 算法 中间件
分布式服务器框架之搭建C#+MongoDB+Redis初步
Common类库主要做的是一些大家都需要用到的通用的事情,为了避免重复,所以就提取出来了一个Dll。Common库主要是实现了表格数据的加载模块、在CsRedisClient、MongoClient中间件的基础上进行二次封装。实现了数据库连接、Redis连接、以及数据库和Redis的增删改查断开操作。

推荐镜像

更多