MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence entre le stockage d'un ObjectId et sa forme de chaîne, dans MongoDB

Personnellement, je blâme votre code. Je contourne parfaitement ce problème dans mes applications en codant de la bonne manière. Je convertis en chaîne dans le code pour comparer et je m'assure que tout ce qui ressemble à un ObjectId est en fait utilisé comme un ObjectId .

Il est bon de noter qu'entre le ObjectId (http://docs.mongodb.org/manual/reference/object-id/) et sa représentation hexadécimale il y a en fait 12 octets de différence, le ObjectId étant de 12 octets et sa représentation hexadécimale étant de 24.

Il ne s'agit pas seulement d'efficacité de stockage, mais aussi d'index; non seulement parce qu'ils sont plus petits mais aussi depuis le ObjectId peut être utilisé d'une manière spéciale pour s'assurer que seules des parties de l'index sont chargées ; les pièces utilisées. Cela devient plus visible lors de l'insertion, où seule la dernière partie de cet index doit être chargée pour garantir l'unicité. Vous ne pouvez pas garantir un tel comportement avec sa représentation hexadécimale.

Je vous déconseille fortement d'utiliser le OjbectId la représentation hexadécimale. Si vous voulez "vous simplifier la vie", vous feriez mieux de créer un autre _id qui est plus petit mais tout aussi unique et convivial pour les index.