迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

MongoDB 中 ObjectId 和 $Oid 的区别

作者:迹忆客 最近更新:2023/04/20 浏览次数:

MongoDB 将所有数据记录存储在单独的 BSON 文档中。 提供标识符以唯一地标识每个文档。

标识符帮助用户在搜索其他文档时唯一地定位该文档。

借助标识符可以轻松进行查询,并相应地生成结果。

在每个集合中,每个文档都有一个唯一的 _id 字段作为其主键。 _id 默认格式是文档的 ObjectID。


ObjectID 的特点

ObjectID 充当特定集合中单个文档的标识符。 ObjectID 是一个 12 字节的 BSON 类型字段。

字段划分如下:

  1. 单个文档的 Unix 时间戳由前四个字节表示。
  2. 当前运行MongoDB服务器的机器ID由以下三个字节表示。
  3. 进程 ID 由接下来的两个字节表示。
  4. 为了增加 ObjectID,保留最后三个字节。

ObjectID 的格式

可以在创建文档时定义 ObjectID。 有两种方法可以将 ObjectID 分配给文档。

  1. 创建后,用户将 ObjectID 分配给文档本身。
  2. 该文档采用 MongoDB 服务器分配给它的默认 ObjectID。

ObjectID 以下列格式定义:

ObjectId(<hexadecimal>)

用于定义 ObjectID 的 <hexadecimal> 参数是可选的。 如果用户在 _id 字段中定义了一个值,则该值将作为 ObjectID 分配给文档。

否则,MongoDB 服务器会为文档提供一个 ID。


MongoDB 中 ObjectID 和 $oid 的区别

MongoDB 服务器中的 ObjectID 和 $oid 之间没有区别。 这两者只是新 shell 引入的不同序列化格式。

对象 ID 在 MongoDB 服务器的 $oid 帮助下表示。 服务器使用 Strict MongoDB Extended JSON; 因此,对象 ID 表示如下:

{ "$oid": "<id>" }

如上所示,搜索特定文档时可以使用 $oid 术语。 您可以在编写查询时使用 $oid。

另一方面,ObjectID 可用于创建文档。 此外,可以使用ObjectID 的方法从12 字节长的Object ID 中获取特定的值。

总之,这两个实体在MongoDB服务器中并没有太大区别。


使用 ObjectID 在集合中插入文档

如前一节所述,ObjectID 字段采用可选的十六进制参数。 如果在创建文档时没有为 _id 字段设置值,MongoDB 服务器会为集合中的文档设置一个默认的唯一值。

在集合中插入单个文档的语法如下:

db.collectionName.insertOne()

该代码片段在集合中插入一个文档,其 _id 字段中的默认值由服务器设置。

在集合中插入多个文档的语法如下:

db.collectionName.insertMany()

该代码片段在集合中插入多个文档,并在服务器设置的 _id 字段中使用默认值。

设置 ObjectID 字段

用户可以在创建文档时设置 _id 字段,因为它是唯一的。 设置 ObjectID 或 $oid 的语法如下:

db.collectionname.insertOne({"_id":"1789473"})

下面是在集合中设置文档的 ObjectID 的示例。 假设以下实体:

  1. 数据库名称:officedb
  2. 集合名称:employee_officedb

使用以下命令在 MongoDB 服务器中创建文档:

> use officedb
switched to db officedb
> db.createCollection("employee_officedb")
{ "ok" : 1 }
> db.employee_officedb.insert({ name : "asad", rank : 23})
WriteResult ({ "nInserted" : 1})
> db.employee_officedb.find().pretty()
{
        "_id" : ObjectId ("8e12bn2a0ty562888ab93711"),
        "name" : "asad"
        "rank"  : 23
}

ObjectID 的方法

四种方法扩展了 MongoDB 中 ObjectID 的概念。 如下所述,每种方法都有不同的功能。

  1. str 方法:这用于获取十六进制字符串格式的对象 ID。
  2. ObjectId.getTimestamp() 方法将对象的时间戳部分作为日期返回。
  3. ObjectId.valueOf() 方法:此方法返回给定字符串文字的十六进制格式。
  4. ObjectId.toString() 方法:此方法以 JavaScript 表示的字符串格式返回对象 ID。

总结

探索 MongoDB 服务器中的 ObjectID 和 $oid 的空间很大。 除了表示形式之外,两者之间没有太大区别。

一些 shell 使用 ObjectID,而其他 shell 使用 $oid。 因此,数据操作和存储取决于您设备上安装的 shell 版本。

对于文档及其 ID 的定义,请使用 ObjectID。 另一方面,在编写和运行查询时,使用 $oid 搜索整个集合以找到所需的文档。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

比较 MongoDB 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。

MongoDB 截断集合

发布时间:2023/04/21 浏览次数:178 分类:MongoDB

可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。

删除 MongoDB 中的重复项

发布时间:2023/04/21 浏览次数:151 分类:MongoDB

在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

MongoDB 中的唯一索引

发布时间:2023/04/21 浏览次数:144 分类:MongoDB

在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。

在 MongoDB 中创建索引

发布时间:2023/04/21 浏览次数:104 分类:MongoDB

索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。

MongoDB 中的稀疏索引

发布时间:2023/04/21 浏览次数:142 分类:MongoDB

在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便