Dutch PHP Conference 2025 - Call For Papers

A classe MongoDB\BSON\ObjectId

(mongodb >=1.0.0)

Introdução

Tipo BSON para um » ObjectId. O valor consiste em 12 bytes, onde os primeiros quatro bytes são um timestamp que reflete a criação do ObjectId. Especificamente, o valor consiste em:

  • um valor de 4 bytes que representa os segundos desde a época Unix,
  • um número aleatório de 5 bytes único para um equipamento e um processo, e
  • um contador de 3 bytes, começando com um valor aleatório.

No MongoDB, cada documento armazenado em uma coleção requer um campo _id exclusivo que atua como chave primária. Se um documento inserido omitir o campo _id, a extensão gera automaticamente um ObjectId para o campo _id.

Usar ObjectIds para o campo _id fornece os seguintes benefícios adicionais:

  • O horário de criação do ObjectId pode ser acessado usando o método MongoDB\BSON\ObjectId::getTimestamp().
  • A classificação em um campo _id que armazena valores ObjectId é aproximadamente equivalente à classificação por horário de criação.

Resumo da classe

/* Métodos */
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
}

Registro de Alterações

Versão Descrição
PECL mongodb 1.12.0 Implementa Stringable para PHP 8.0+.
PECL mongodb 1.3.0

Renomeado de MongoDB\BSON\ObjectID para MongoDB\BSON\ObjectId.

Implementa MongoDB\BSON\ObjectIdInterface.

PECL mongodb 1.2.0 Implementa Serializable e JsonSerializable.

Índice

add a note

User Contributed Notes 2 notes

up
22
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
5
Mike T
6 years ago
Worth noting this will throw an InvalidArgumentException if string is not in the correct format
To Top