MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Unterschied zwischen dem Speichern einer ObjectId und ihrer Zeichenfolgenform in MongoDB

Ich persönlich gebe Ihrem Code die Schuld. Ich kann das in meinen Anwendungen perfekt umgehen, indem ich richtig codiere. Ich wandle den Code zum Vergleichen in eine Zeichenfolge um und stelle sicher, dass alles, was wie eine ObjectId aussieht wird tatsächlich als ObjectId verwendet .

Es ist gut zu beachten, dass zwischen ObjectId (http://docs.mongodb.org/manual/reference/object-id/) und seiner hexadezimalen Darstellung gibt es tatsächlich 12 Bytes Unterschied, die ObjectId 12 Bytes und seine Hex-Darstellung 24.

Es geht nicht nur um Speichereffizienz, sondern auch um Indizes; nicht nur weil sie kleiner sind, sondern auch wegen der ObjectId kann in besonderer Weise verwendet werden, um sicherzustellen, dass nur Teile des Index geladen werden; die verwendeten Teile. Dies macht sich am deutlichsten beim Einfügen bemerkbar, wo nur der letzte Teil dieses Index geladen werden muss, um die Eindeutigkeit sicherzustellen. Sie können ein solches Verhalten mit seiner Hex-Darstellung nicht garantieren.

Ich würde dringend empfehlen, die OjbectId nicht zu verwenden 's Hex-Darstellung. Wenn Sie "Ihr Leben einfacher machen" möchten, sollten Sie besser eine andere _id erstellen die kleiner, aber irgendwie genauso einzigartig und indexfreundlich ist.