Personalmente, incolpo il tuo codice. Mi aggiro perfettamente nelle mie applicazioni codificando nel modo giusto. Converto in stringa nel codice da confrontare e mi assicuro che tutto ciò che assomigli a un ObjectId
viene effettivamente utilizzato come ObjectId
.
È bene notare che tra ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) e nella sua rappresentazione esadecimale ci sono infatti 12 byte di differenza, il ObjectId
essendo 12 byte e la sua rappresentazione esadecimale è 24.
Non si tratta solo dell'efficienza dello storage, ma anche degli indici; non solo perché sono più piccoli, ma anche perché ObjectId
può essere utilizzato in modo speciale per garantire che vengano caricate solo parti dell'indice; le parti che vengono utilizzate. Questo diventa più evidente durante l'inserimento, dove solo la parte più recente di quell'indice deve essere caricata per garantire l'unicità. Non puoi garantire tale comportamento con la sua rappresentazione esadecimale.
Consiglio vivamente di non utilizzare OjbectId
rappresentazione esadecimale di . Se vuoi "renderti la vita più facile" faresti meglio a creare un diverso _id
che è più piccolo ma in qualche modo altrettanto unico e adatto agli indici.