Podle mého názoru ne. Rozdíl ve výkonu bude pro většinu scénářů zanedbatelný (kromě stránkování ), ale
- Nastává stará diskuse o náhradních primárních klíčích. "Slimák" není příliš přirozený klíč. Ano, musí být jedinečný, ale jak jste již uvedli, výměna slimáka by neměla být nemožná. To samo o sobě by mě zabránilo obtěžovat...
- Mají monotónní
_id
klíč vás může ušetřit mnoha bolestí hlavy, hlavně abyste se vyhnuli drahému stránkování pomocískip
atake
(použijte$lt
/$gt
na_id
místo toho). - Je omezena maximální délka indexu v mongodb méně než 1024 bajtů. Ačkoli to není hezké, adresy URL mohou být mnohem déle . Pokud by někdo zadal delší slimák, nebyl by nalezen, protože je tiše vyřazen z indexu.
- Je dobré mít konzistentní rozhraní, tj. používat stejný typ
_id
na všech nebo alespoň na většině vašich objektů. V mém kódu mám jedinou výjimku, kdy jako id používám speciální hash, protože hodnotu nelze změnit, kolekce má extrémně vysokou rychlost zápisu a je velká. - Řekněme, že chcete odkazovat na článek ve svém rozhraní pro správu (nikoli na veřejném webu), který odkaz byste použili? Normálně id, ale nyní jsou id a slug ekvivalentní. Nyní by se z jednoduché chyby (jako je povolení prázdného slimáka) dalo jen těžko dostat, protože uživatel už ani nemohl přejít do rozhraní pro správu.
- Budete řešit problémy se znakovými sadami. Navrhoval bych pro vyhledávání článku ani nepoužívat slimák, ale hash slimáka .
V podstatě byste skončili se schématem jako
{ "_id" : ObjectId("a237b45..."), // PK
"slug" : "mongodb-is-fun", // not indexed
"hash" : "5af87c62da34" } // indexed, unique