sql >> Databáze >  >> NoSQL >> MongoDB

Generování _id vs. automatické generování ObjectId v MongoDB

ObjectId s jsou k dispozici pro situace, kdy nemáte jedinečný klíč pro každý dokument ve sbírce. Jsou jedinečné, takže se nemusíte obávat konfliktů a ve velkých nasazeních se poměrně dobře štěpí bez větších starostí (mají své klady a zápory, přečtěte si více zde ).

ObjectId obsahuje také časové razítko klienta, kde je ObjectId byl vygenerován (pokud není DB server nakonfigurován tak, aby generoval všechny klíče). S tím, jak jste si všimli, můžete použít časové razítko k provádění některých operací s datem. Pokud však plánujete používat Aggregation Framework, zjistíte, že nemůžete použít ObjectId v aktuálních datových operacích (problém ). Pokud chcete použít AF, budete potřebovat druhé pole, které obsahuje datum, bohužel je dvakrát uloženo s ObjectId interní hodnotu.

Pokud si můžete být jisti, že _id je jedinečný, pak není moc důvodů používat ObjectId ve vaší datové struktuře.




  1. Motory pro zpracování velkých dat – Který z nich mám použít?:Část 1

  2. Jak udržím dokumenty v agregaci pomocí $unwind

  3. pole mongoose _id nelze smazat

  4. Návrh schématu databáze MongoDB