Ik persoonlijk geef je code de schuld. Ik kan dit prima omzeilen in mijn toepassingen door op de juiste manier te coderen. Ik converteer naar string in code om te vergelijken en ik zorg ervoor dat alles dat lijkt op een ObjectId
wordt feitelijk gebruikt als een ObjectId
.
Het is goed om te weten dat tussen de ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) en het is hex-representatie, er is in feite 12 bytes verschil, de ObjectId
zijnde 12 bytes en de hex-representatie is 24.
Het gaat niet alleen om opslagefficiëntie, maar ook om indexen; niet alleen omdat ze kleiner zijn, maar ook omdat de ObjectId
kan op een speciale manier worden gebruikt om ervoor te zorgen dat alleen delen van de index worden geladen; de onderdelen die worden gebruikt. Dit wordt het meest merkbaar bij het invoegen, waarbij alleen het laatste deel van die index hoeft te worden geladen om uniek te zijn. Je kunt dergelijk gedrag niet garanderen met zijn hexadecimale weergave.
Ik raad u ten zeerste aan om de OjbectId
. niet te gebruiken 's hexadecimale representatie. Als u "uw leven gemakkelijker wilt maken", kunt u beter een andere _id
maken die kleiner is maar op de een of andere manier net zo uniek en indexvriendelijk is.