ObjectId
s existem para situações em que você não tem uma chave exclusiva para cada documento em uma coleção. Eles são únicos, então você não precisa se preocupar com conflitos e eles fragmentam razoavelmente bem em grandes implantações sem muita preocupação (eles têm prós e contras, leia mais aqui
). O
ObjectId
também contém o timestamp do cliente onde o ObjectId
foi gerado (a menos que o servidor de banco de dados esteja configurado para gerar todas as chaves). Com isso, como você notou, você pode usar o timestamp para realizar algumas operações de data. No entanto, se você planeja usar o Aggregation Framework, descobrirá que não pode usar um ObjectId
em qualquer data atual (emissão
). Se você quiser usar o AF, precisará de um segundo campo que contenha a data, infelizmente armazenando-o duplamente com o ObjectId
valor interno de. Se você pode ter certeza de que o
_id
você está gerando é único, então não há muita razão para usar um ObjectId
em sua estrutura de dados.