Jeg personligt giver din kode skylden. Jeg kommer udenom dette perfekt i mine applikationer ved at kode den rigtige måde. Jeg konverterer til streng i kode for at sammenligne, og jeg sikrer, at alt, der ligner et ObjectId
bruges faktisk som et ObjectId
.
Det er godt at bemærke, at mellem ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) og dets hex-repræsentation er der faktisk 12 bytes forskel, ObjectId
er 12 bytes, og dens hex-repræsentation er 24.
Det handler ikke kun om lagereffektivitet, men også om indekser; ikke kun fordi de er mindre, men også siden ObjectId
kan bruges på en særlig måde for at sikre, at kun dele af indekset er indlæst; de dele, der bruges. Dette bliver mest mærkbart ved indsættelse, hvor kun den seneste del af det indeks skal indlæses for at sikre unikhed. Du kan ikke garantere en sådan adfærd med dens hex-repræsentation.
Jeg vil kraftigt anbefale, at du ikke bruger OjbectId
's hex repræsentation. Hvis du ønsker at "gøre dit liv lettere", ville du være bedre stillet til at oprette et andet _id
som er mindre, men på en eller anden måde lige så unik og indeksvenlig.