sql >> Database >  >> NoSQL >> MongoDB

Lengte collectie-ID in MongoDB

Waarom is de standaard _id een hexadecimale tekenreeks van 24 tekens?

De standaard unieke identifier gegenereerd als de primaire sleutel (_id ) voor een MongoDB-document is een ObjectId . Dit is een binaire waarde van 12 bytes die vaak wordt weergegeven als een hexadecimale tekenreeks van 24 tekens, en een van de standaardveldtypen die wordt ondersteund door de MongoDB BSON-specificatie .

De 12 bytes van een ObjectId worden geconstrueerd met:

  • een waarde van 4 bytes die de seconden vertegenwoordigt sinds het Unix-tijdperk
  • een machine-ID van 3 bytes
  • een proces-ID van 2 bytes
  • een teller van 3 bytes (beginnend met een willekeurige waarde)

Wat is het belang van een ObjectId?

ObjectIds (of vergelijkbare identifiers gegenereerd volgens een GUID formule) zorgen ervoor dat unieke identifiers onafhankelijk kunnen worden gegenereerd in een gedistribueerd systeem.

De mogelijkheid om onafhankelijk een unieke ID te genereren wordt erg belangrijk naarmate u opschaalt naar meerdere applicatieservers (of misschien meerdere databaseknooppunten in een sharded cluster ). U wilt geen centraal coördinatieknelpunt zoals een sequentieteller (zoals bij een auto-incrementerende primaire sleutel) en u wilt nieuwe documenten invoegen zonder risico dat een nieuwe identifier een duplicaat.

Een ObjectId wordt meestal gegenereerd door uw MongoDB clientstuurprogramma , maar kan ook worden gegenereerd op de MongoDB-server als uw clientstuurprogramma of toepassingscode of nog geen _id heeft toegevoegd veld.

Moet ik de standaard ObjectId gebruiken?

Nee. Als u een geschiktere unieke identificatiecode heeft, kunt u altijd uw eigen waarde opgeven voor _id . Dit kan een enkele waarde zijn of een samengestelde waarde met meerdere velden.

De belangrijkste beperkingen op _id waarden zijn dat ze uniek moeten zijn voor een verzameling en dat u de _id . niet kunt bijwerken of verwijderen voor een bestaand document.



  1. Mongo-daemon wordt niet uitgevoerd door service mongod start

  2. krijg maximale waarde in mangoest

  3. mongo $ slice query reverse index buiten bereik

  4. Datums en tijdstempels invoegen en ophalen in mongodb met behulp van PHP