Ne, není to vůbec špatné a ve skutečnosti je to vestavěné ObjectId
je v rámci indexu poměrně velký, takže pokud věříte, že máte něco lepšího, můžete změnit výchozí hodnotu _id
pole k čemukoli.
Ale, a to je velké ale , při rozhodování o přechodu od výchozího formulovaného ObjectId
je třeba zvážit , zejména při použití automatického zvyšování _id, jak je uvedeno zde:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field
Vícevláknové zpracování není tak velký problém, protože findAndModify
a atomové zámky se o to skutečně postarají, ale pak teprve narazíte na svůj první problém. findAndModify
není nejrychlejší ani nejlehčí funkcí a při pravidelném používání došlo k výraznému poklesu výkonu.
Stejně tak musíte zvážit režii, kterou byste museli udělat sami, a to i bez findAndModify
. Pro každou přílohu budete potřebovat další dotaz. Představte si, že máte jedinečné ID, které musíte pokaždé, když chcete vložit, dotazovat na jedinečnost. Nakonec vaše rychlost vkládání klesne na procházení a čas uzamčení se zvýší.
Samozřejmě ObjectId
je opravdu dobrý v tom, že je jedinečný, aniž by musel kontrolovat nebo formulovat svou vlastní jedinečnost dotykem databáze před vložením, a proto nemá tuto režii.
Pokud se stále domníváte, že celé číslo _id vyhovuje vašemu scénáři, jděte do toho, ale mějte na paměti výše popsanou režii.