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.