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

Hvordan er en MongoDB ObjectID 12 bytes?

I henhold til ObjectId-dokumentationen , er den streng, du ser, en hex-repræsentation af de 12 bytes. Det er ikke Unicode eller endda en streng. Det er faktisk et tal.

En byte er 8 bit, hvilket betyder, at den kan have 2^8 ==256 mulige værdier (se Byte ).

Hvordan repræsenterer du et tal med 256 mulige værdier kortfattet? Hvad med at repræsentere det som 16^2 i stedet for? Du kan opnå dette ved at bruge 2 hexadecimale værdier (grundlag 16). Det eneste, du skal opfinde, er et nummereringssystem, der går til 16 i stedet for 10.

Faktisk bruger vi bogstaver fra a til f for at repræsentere værdierne 10 til 15.

En byte kan således repræsenteres i to hexadecimale tal. Det tilfældigvis bruger a til f da vi ikke kunne være ulejlighed at opfinde specielle symboler til dem. De er ikke bogstaver. De er tal.

Så nej, strengen du ser i ObjectId repræsenterer ikke 24 bytes. Hvert andet tegn repræsenterer i stedet en byte. 24 hex-tal ==12 bytes.



  1. Mongoose findOneAndUpdate og upsert returnerer ingen fejl, ingen dokumenter påvirket

  2. MongoDB:hvordan tæller man antallet af nøgler i et dokument?

  3. Sådan undgår du tidsgab, mens du samler OHLC i mongoDB

  4. Tekstsøgning for tekst anden giver altid ingen resultater?