sql >> Database >  >> NoSQL >> MongoDB

Generatie van _id vs. ObjectId autogeneratie in MongoDB

ObjectId s zijn er voor situaties waarin u niet voor elk document in een verzameling een unieke sleutel heeft. Ze zijn uniek, dus je hoeft je geen zorgen te maken over conflicten en ze scheren redelijk goed in grote implementaties zonder al te veel zorgen (ze hebben hun voor- en nadelen, lees meer hier ).

De ObjectId bevat ook de tijdstempel van de client waar de ObjectId is gegenereerd (tenzij de DB-server is geconfigureerd om alle sleutels te genereren). Daarmee kun je, zoals je hebt opgemerkt, de tijdstempel gebruiken om enkele datumbewerkingen uit te voeren. Als u echter van plan bent het Aggregation Framework te gebruiken, zult u merken dat u geen ObjectId kunt gebruiken. in alle datumbewerkingen momenteel (probleem ). Als je de AF wilt gebruiken, heb je een tweede veld nodig dat de datum bevat, helaas dubbel opgeslagen met de ObjectId 's interne waarde.

Als u er zeker van kunt zijn dat de _id je genereert uniek is, dan is er niet veel reden om een ​​ObjectId te gebruiken in uw datastructuur.




  1. Mongo-indexering op objectarrays versus objecten

  2. Trek en voeg tegelijkertijd toe met mongo

  3. Kunnen we meedoen aan Redis?

  4. hoe kan ik het gebruikersnaamwachtwoord valideren voor mongodb-authenticatie via pymongo?