PHP Conference Japan 2024

MongoDB\BSON\ObjectId 类

(mongodb >=1.0.0)

简介

用于 » ObjectId 的 BSON 类型。该值由 12 个字节组成,其中前四个字节是反映 ObjectId 创建时间的 timestamps。具体来说,该值由以下部分组成:

  • 一个 4 字节的值,表示自 Unix 纪元以来的秒数,
  • 一个 5 字节的随机数,对于机器和进程是唯一的,以及
  • 一个 3 字节的计数器,从一个随机值开始。

在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id 字段,用作主键。如果插入的文档省略了 _id 字段,则扩展会自动为 _id 字段生成一个 ObjectId。

使用 ObjectId 作为 _id 字段可提供以下额外好处:

类概要

/* 方法 */
final public __construct(?string $id = null)
final public getTimestamp(): int
final public jsonSerialize(): mixed
final public serialize(): string
final public __toString(): string
final public unserialize(string $data): void
}

变更日志

版本 描述
PECL mongodb 1.12.0 实现了 PHP 8.0+ 的 Stringable
PECL mongodb 1.3.0

MongoDB\BSON\ObjectID 重命名为 MongoDB\BSON\ObjectId

实现了 MongoDB\BSON\ObjectIdInterface

PECL mongodb 1.2.0 实现了 SerializableJsonSerializable

目录

添加注释

用户贡献的注释 2 条注释

28
naip1984 at gmail dot com
6 年前
我花了一段时间才找到使用 ObjectID 进行 find() 的方法。

这似乎有效,希望这对其他人有所帮助。

$mongoId = '5a2493c33c95a1281836eb6a';

$collection->find(['_id'=> new MongoDB\BSON\ObjectId("$mongoId")]);

我在这里找到了它:https://docs.mongodb.com/php-library/current/reference/method/MongoDBCollection-findOne/

请注意,这是针对 PHP 库,而不是旧版库。
8
Mike T
6 年前
值得注意的是,如果字符串格式不正确,这将抛出 InvalidArgumentException
To Top