“文档” 菜单
文档首页
/ / /
C 驱动程序
/ /

ObjectID

在此页面上

  • 组合
  • 对 ObjectID 进行排序
  • 比较对象 ID
  • 正在生成
  • 解析 ObjectID 字符串
  • 对 ObjectID 进行哈希处理
  • 正在获取ObjectId创建时间

Libbson 提供了一种生成 ObjectID 的简单方法。 它可以根据您的要求以单线程或多线程方式使用。

bson_oid_t 结构体表示ObjectID MongoDB 中的 。它是一个96 位标识符。

  • 4字节:大端格式的 UNIX 时间戳。

  • 5字节:一个随机数。

  • 3字节: 24位单调计数器以大端字节序从rand()递增。

在 C 语言中,典型的排序方法是使用qsort() 。因此,Libbson 提供了一个名为qsort() bson_oid_compare 的 兼容回调函数 。它返回less than 1greater than 10 ,具体取决于两个 bson_oid_t 结构。

如果您只想比较两个 bson_oid_t 结构体的相等性,请使用 bson_oid_equal。

生成 bson_oid_t ,您可以使用以下内容。

bson_oid_t oid;
bson_oid_init (&oid, NULL);

您还可以解析包含 bson_oid_t 的字符串 。输入字符串的长度 必须 为24 字符或更长。

bson_oid_t oid;
bson_oid_init_from_string (&oid, "123456789012345678901234");
bson_oid_t oid;
bson_oid_init_from_string_unsafe (&oid, "123456789012345678901234");

如果需要在哈希表中存储项目,则可能需要使用 bson_oid_t 作为键。 Libbson 为此目的提供了一个哈希函数。它基于 DJB 哈希。

unsigned hash;
hash = bson_oid_hash (oid);

您可以轻松获取 bson_oid_t 使用 bson_oid_get_time_t 生成。

time_t t;
t = bson_oid_get_time_t (oid);
printf ("The OID was generated at %u\n", (unsigned) t);

后退

处理错误

来年

解析和迭代 BSON 文档