SunshinePHP 2020 CFP Started

Класс MongoDB\BSON\ObjectId

(mongodb >=1.0.0)

Введение

Тип BSON для » ObjectId. Значение состоит из 12 байтов, где первые четыре байта являются меткой времени, которая отражает создание ObjectId. В частности, значение состоит из:

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

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

Использование ObjectIds для поля _id обеспечивает следующие дополнительные преимущества:

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

Обзор классов

final MongoDB\BSON\ObjectId implements MongoDB\BSON\ObjectIdInterface , MongoDB\BSON\Type , Serializable , JsonSerializable {
/* Методы */
final public __construct ([ string $id ] )
final public getTimestamp ( void ) : int
final public jsonSerialize ( void ) : mixed
final public serialize ( void ) : string
final public __toString ( void ) : string
final public unserialize ( string $serialized ) : void
}

Список изменений

Версия Описание
1.3.0

Переименован из MongoDB\BSON\ObjectID в MongoDB\BSON\ObjectId.

1.2.0 Реализует Serializable и JsonSerializable.

Содержание

add a note add a note

User Contributed Notes 2 notes

up
10
naip1984 at gmail dot com
1 year 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
2
Mike T
1 year ago
Worth noting this will throw an InvalidArgumentException if string is not in the correct format
To Top