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

Samling ID længde i MongoDB

Hvorfor er standard _id en hex-streng på 24 tegn?

Den unikke standardidentifikator, der genereres som den primære nøgle (_id ) for et MongoDB-dokument er et ObjectId . Dette er en binær værdi på 12 byte, som ofte er repræsenteret som en hex-streng på 24 tegn, og en af ​​standardfelttyperne understøttet af MongoDB BSON-specifikation .

De 12 bytes af et ObjectId er konstrueret ved hjælp af:

  • en 4 byte-værdi, der repræsenterer sekunderne siden Unix-epoken
  • en 3 byte maskin-id
  • et 2 byte proces-id
  • en tæller på 3 byte (startende med en tilfældig værdi)

Hvad er vigtigheden af ​​et ObjectId?

ObjectId'er (eller lignende identifikatorer genereret i henhold til en GUID formel) tillader unikke identifikatorer at blive genereret uafhængigt i et distribueret system.

Evnen til selvstændigt at generere et unikt ID bliver meget vigtigt, når du skalerer op til flere applikationsservere (eller måske flere databasenoder i en sharded cluster ). Du ønsker ikke at have en central koordinationsflaskehals som en sekvenstæller (f.eks. som du måske har for en auto-inkrementerende primærnøgle), og du vil gerne indsætte nye dokumenter uden risiko for, at en ny identifikator viser sig at være en dublet.

Et ObjectId genereres typisk af din MongoDB klientdriver , men kan også genereres på MongoDB-serveren, hvis din klientdriver eller applikationskode eller ikke allerede har tilføjet en _id felt.

Skal jeg bruge standard ObjectId?

Nej. Hvis du har en mere passende unik identifikator at bruge, kan du altid angive din egen værdi for _id . Dette kan enten være en enkelt værdi eller en sammensat værdi ved hjælp af flere felter.

De vigtigste begrænsninger på _id værdier er, at de skal være unikke for en samling, og du kan ikke opdatere eller fjerne _id for et eksisterende dokument.



  1. Hvordan fungerer sortering med `$or` og `$in` forespørgsler i MongoDB?

  2. Sådan deaktiveres flapdoodle-indlejret mongodb i visse tests

  3. Opdater flere dokumenter efter id-sæt. Mongoose

  4. Meteor - collection.find() returnerer altid alle felter