sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur är en MongoDB ObjectID 12 byte?

Enligt ObjectId-dokumentationen , den strängen du ser är en hexadecimal representation av de 12 byten. Det är inte Unicode eller ens en sträng. Det är faktiskt en siffra.

En byte är 8 bitar, vilket betyder att den kan ha 2^8 ==256 möjliga värden (se Byte ).

Hur representerar du ett tal med 256 möjliga värden kortfattat? Vad sägs om att representera det som 16^2 istället? Du kan uppnå detta genom att använda 2 hexadecimala värden (bas 16). Det enda du behöver uppfinna är ett numreringssystem som går till 16 istället för 10.

Faktum är att vi använder bokstäver från a till f för att representera värdena 10 till 15.

Således kan en byte representeras i två hexadecimala tal. Det råkar bara använda a till f eftersom vi inte kunde bry oss om att uppfinna speciella symboler för dem. De är inte bokstäver. De är siffror.

Så nej, strängen du ser i ObjectId representerar inte 24 byte. Vartannat tecken representerar istället en byte. 24 hexadecimala tal ==12 byte.



  1. Redis sentinel vs clustering

  2. Lägg till flera värden med $addToSet Mongo-operatorn

  3. MongoDB:klass java.lang.Double kan inte castas till klass java.lang.Long

  4. Infoga och returnera ID för underdokument i MongoDB-dokumentunderdokumentarray