MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Differenza tra la memorizzazione di un ObjectId e la sua forma di stringa, in MongoDB

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.