MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Diferença entre armazenar um ObjectId e sua forma de string, no MongoDB


Eu, pessoalmente, culpo seu código. Eu resolvo isso perfeitamente em meus aplicativos codificando da maneira certa. Eu converto em string no código para comparar e garanto que qualquer coisa que se pareça com um ObjectId é realmente usado como um ObjectId .

É bom notar que entre o ObjectId (http://docs.mongodb.org/manual/reference/object-id/) e em sua representação hexadecimal há de fato 12 bytes de diferença, o ObjectId sendo 12 bytes e sua representação hexadecimal sendo 24.

Não se trata apenas de eficiência de armazenamento, mas também de índices; não apenas porque são menores, mas também porque o ObjectId pode ser usado de maneira especial para garantir que apenas partes do índice sejam carregadas; as peças que são usadas. Isso se torna mais perceptível ao inserir, onde apenas a parte mais recente desse índice precisa ser carregada para garantir a exclusividade. Você não pode garantir tal comportamento com sua representação hexadecimal.

Eu recomendo fortemente que você não use o OjbectId representação hexadecimal de . Se você quiser "facilitar sua vida", seria melhor criar um _id diferente que é menor, mas de alguma forma tão único e amigável ao índice.