O que é o campo _id do MongoDB e como usar?
Tags: dev, bson, database, mongodb
Published: 2020-04-04 21:02:11

---
title: O que é o campo _id do MongoDB e como usar?
published: true
date: 2020-03-21 23:58:27 UTC
tags: Dev,bson,database,mongo
canonical_url: https://marquesfernandes.com/o-que-e-o-campo-_id-do-mongodb-e-como-usar/
---

MongoDB é um banco de dados que vem ganhado muita popularidade nos últimos tempos, sua capacidade de crescimento do banco de dados e modelagem amigável com objetos vem atraído cada vez mais adeptos. Afinal, o slogan do sistema é “para idéias gigantes” e por boas razões. O sistema suporta extrema escalabilidade e foi projetado para armazenar um número excepcionalmente grande de documentos.

Se você está começando ou já utiliza um banco MongoDB, já deve ter notado a existência obrigatório de um curioso campo: `_id`. Você sabe para que ele realmente serve e o que está escondido no meio de tantas letras e números?

## Características do ObjectId

O campo \_id é um dado do tipo ObjectId, e ele tem algumas funções padrões primárias:

- \_id é a chave primária de todos os elementos de uma coleção, isso permite que os registros sejam diferenciados por padrão.
- \_id é um campo indexado automaticamente. As pesquisas que especificam {\_id: } referem-se ao índice \_id como guia.
- Em termos de arquitetura, por padrão, o campo \_id é um ObjectID, um dos tipos [BSON](http://bsonspec.org/) do MongoDB. Os usuários também podem substituir \_id por algo diferente de um ObjectID, embora não seja muito recomendado.

Um dos motivos pelos quais os ObjectId são gerados da maneira mencionada acima é que ele contém um comportamento útil devido à maneira como a ordenação funciona. Como ele contém um carimbo de data/hora de 4 bytes (resolução de segundos) e um contador de incremento, além de alguns identificadores mais exclusivos, como o identificador da máquina, graças a isso podemos usar o campo \_id para classificar documentos na ordem de criação, basta ordenar o campo \_id. Isso pode ser útil em bases que precisam economizar o espaço, não sendo necessário um carimbo de data / hora de criação adicional.

## Estruturas do ObjectId

Um ObjectId é um tipo BSON binário de 12 bytes representados em 24 caracteres hexadecimais:

```
{ "\_id": ObjectId("54759eb3c090d83494e2d804")}
```

Esses bytes são gerados automaticamente e separados em grupos com funcionalidades específicas:

| Tamanho | Descrição |
| --- | --- |
| 4 bytes | 4 bytes que representa os segundos desde a época do Unix |
| 3 bytes | 3-byte com identificador de máquina |
| 2 bytes | 2-byte com o identificador único do processo |
| 3 bytes | 3-byte contador que começa com um número aleatório por coleção |

**Referências:**  
[https://mongodb.github.io/node-mongodb-native/2.0/tutorials/objectid/  
](https://mongodb.github.io/node-mongodb-native/2.0/tutorials/objectid/)[https://mongodb.github.io/mongo-csharp-driver/2.6/apidocs/html/T\_MongoDB\_Bson\_ObjectId.htm  
](https://mongodb.github.io/mongo-csharp-driver/2.6/apidocs/html/T_MongoDB_Bson_ObjectId.htm)[https://www.vividcortex.com/blog/what-is-mongodbs-id-field-and-how-to-use-it](https://www.vividcortex.com/blog/what-is-mongodbs-id-field-and-how-to-use-it)

O post [O que é o campo \_id do MongoDB e como usar?](https://marquesfernandes.com/o-que-e-o-campo-_id-do-mongodb-e-como-usar/) apareceu primeiro em [Henrique Marques Fernandes](https://marquesfernandes.com).