ObjectId (Identificador de Objeto)
Última atualização: 2026-10-09
ObjectId (Identificador de Objeto)
ObjectId é o tipo _id padrão do MongoDB — um identificador único de 12 bytes: timestamp de 4 bytes + 5 bytes aleatórios + contador de 3 bytes. Ele é gerado automaticamente quando um documento é inserido sem _id, é único entre sistemas distribuídos e incorpora o tempo de criação (extraível).
| Categoria | Tipos BSON |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
// Gerado automaticamente
{ _id: ObjectId("64c8a1b2f3d4e5a6b7c8d9e0") }
// Obter timestamp
ObjectId("...").getTimestamp()
Retorno:Retorna uma instância de ObjectId; é exibida como uma string de 24 caracteres hexadecimais
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// ObjectId: inspeciona após a inserção
const oid = ObjectId()
print(oid.getTimestamp()) // tempo de criação
Saída:
2026-09-25T08:30:00Z
📌 Notas
- 12 bytes = timestamp Unix de 4 bytes + 5 bytes aleatórios + contador de 3 bytes
- ObjectIds são aproximadamente monotônicos; ordenar por _id se aproxima da ordem de inserção
- A forma string tem 24 caracteres hexadecimais
- getTimestamp() extrai o tempo de criação
🏷️ Tags Relacionados
💡 Casos Relacionados
Documentos e BSON: a base dos dados do MongoDB
Inserção de documentos: uma explicação detalhada sobre `insertOne` e `insertMany`
Padrões avançados do Mongoose: desempenho e flexibilidade
Modelos do Mongoose e projeto de esquemas
Validação de dados e middleware do Mongoose
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QPosso usar um inteiro auto-incrementado para _id?
ASim — especifique _id manualmente na inserção. Mas inteiros auto-incrementados precisam de coordenação sob escritas distribuídas; ObjectId existe justamente para evitar isso.
QQual é o formato de uma string ObjectId?
A24 caracteres hexadecimais, ex.: 64c8a1b2f3d4e5a6b7c8d9e0 — um byte por par.
QObjectIds podem ser ordenados por tempo?
AAproximadamente — os primeiros 4 bytes são um timestamp, então ordenar por _id segue aproximadamente a ordem de inserção, não o tempo exato.