sql >> Database >  >> NoSQL >> MongoDB

Is Mongodb ObjectID uniek tussen documenten?

Het is uniek voor alle praktische doeleinden. De genoemde niet-uniekheid is nogal theoretisch.

De ObjectId is geconstrueerd uit

  • een tijdstempel (seconden sinds tijdperk)
  • een machine-ID
  • de proces-ID
  • en een teller van 3 bytes beginnend met een willekeurige waarde elke seconde

Dus, bij mediaan, zou je veilig moeten zijn, tenzij je meer dan 3080 documenten per seconde per cliënt schrijft. Merk op dat _id heeft een unieke beperking:zelfs als je zou proberen dezelfde ObjectId twee keer te schrijven, er zou een uitzondering zijn.

Kanttekening:zelfs hash-algoritmen zoals MD5 of (in mindere mate) SHA256 hebben een kleine kans op botsing. Maar met een unieke beperking bent u veilig.

Bewerken :Aangezien er een uitzondering wordt gegenereerd in het zeer, zeer, ZEER zeldzame geval dat twee identieke ObjectIds worden gegenereerd en gelijktijdig proberen te worden geschreven, handelt u ze eenvoudig af door een nieuwe ObjectId te genereren en probeert u het document opnieuw op te slaan.



  1. MongoDB 2.2 - Array genest document bijwerken

  2. Mongodb-server starten met npm-scripts

  3. Hoe krijg ik alle cirkels waarin een Punt is opgenomen?

  4. MongoDB Index op verschillende typen