Класс MongoDB\BSON\ObjectId

(mongodb >=1.0.0)

Введение

Класс представляет BSON-данные с типом » ObjectId. Значение состоит из 12 байтов, в которых первые четыре байта — метка времени, которая отражает время, в которое создали объект ObjectId. Подробный состав значения:

  • 4-байтовое значение, которое представляет количество секунд, которое прошло с начала эпохи Unix
  • 5-байтовое случайное число, которое уникально для машины и процесса
  • 3-байтовый счётчик, который начинается со случайного значения

В БД MongoDB для каждого документа, который хранится в коллекции, требуется уникальное поле _id, которое играет роль первичного ключа. Модуль автоматически генерирует значение ObjectId для поля _id, если во вставленном документе нет поля _id.

Идентификаторы ObjectId для поля _id дают следующую дополнительную выгоду:

  • У метода MongoDB\BSON\ObjectId::getTimestamp() будет доступ ко времени, в которое создали значение ObjectId.
  • Сортировка по полю _id, которое хранит значения ObjectId, примерно эквивалентна сортировке по времени создания.

Обзор класса

/* Методы */
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 В классе реализовали интерфейс Stringable для PHP 8.0+.
PECL-модуль mongodb 1.3.0

Класс переименовали из MongoDB\BSON\ObjectID в MongoDB\BSON\ObjectId.

В классе реализовали интерфейс MongoDB\BSON\ObjectIdInterface.

PECL-модуль mongodb 1.2.0 В классе реализовали интерфейсы Serializable и JsonSerializable.

Содержание

Добавить

Примечания пользователей 2 notes

up
28
naip1984 at gmail dot com
6 years ago
I struggled for awhile to identify the way to find() using a ObjectID

This seems to work, I hope this helps someone else out.

$mongoId = '5a2493c33c95a1281836eb6a';

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

I found it here: https://docs.mongodb.com/php-library/current/reference/method/MongoDBCollection-findOne/

Note this is for the PHP library, not the legacy library.
up
8
Mike T
6 years ago
Worth noting this will throw an InvalidArgumentException if string is not in the correct format
To Top