MongoDB - ObjectId
Temos usado o Id de objeto do MongoDB em todos os capítulos anteriores. Neste capítulo, vamos entender a estrutura de ObjectId.
A ObjectId é um tipo BSON de 12 bytes com a seguinte estrutura -
- Os primeiros 4 bytes que representam os segundos desde a época unix
- Os próximos 3 bytes são o identificador da máquina
- Os próximos 2 bytes consistem em process id
- Os últimos 3 bytes são um valor de contador aleatório
MongoDB usa ObjectIds como o valor padrão de _idcampo de cada documento, que é gerado durante a criação de qualquer documento. A combinação complexa de ObjectId torna todos os campos _id únicos.
Criando Novo ObjectId
Para gerar um novo ObjectId, use o seguinte código -
>newObjectId = ObjectId()
A instrução acima retornou o seguinte id gerado exclusivamente -
ObjectId("5349b4ddd2781d08c09890f3")
Em vez de MongoDB gerar o ObjectId, você também pode fornecer uma id de 12 bytes -
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
Criação de carimbo de data / hora de um documento
Como o _id ObjectId por padrão armazena o carimbo de data / hora de 4 bytes, na maioria dos casos você não precisa armazenar o horário de criação de nenhum documento. Você pode buscar a hora de criação de um documento usando o método getTimestamp -
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
Isso retornará a hora de criação deste documento no formato de data ISO -
ISODate("2014-04-12T21:49:17Z")
Convertendo ObjectId em String
Em alguns casos, você pode precisar do valor de ObjectId em um formato de string. Para converter ObjectId em string, use o seguinte código -
>newObjectId.str
O código acima retornará o formato da string do Guid -
5349b4ddd2781d08c09890f3