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.