Předpokládám:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Typ struktury pro tuto otázku.
Normálně ne. _id
s jsou jedinečné identifikátory pro entity. Jako takové, pokud chcete přidat _id
v objektu vnořeného dokumentu, pak jste možná svá data nenormalizovali příliš dobře a mohlo by to být známkou zásadní chyby v návrhu schématu.
Dílčí dokumenty jsou navrženy tak, aby obsahovaly opakující se data pro daný dokument, tj. adresy nebo uživatele nebo tak něco.
To znamená _id
není vždy špatné přidat. Vezměte si příklad, který jsem právě uvedl s adresami. Představte si, že byste měli systém nákupního košíku a (z nějakého důvodu) jste nereplikovali adresu do dokumentu objednávky, pak byste použili _id
nebo nějaký jiný identifikátor pro získání tohoto dílčího dokumentu.
Musíte také vzít v úvahu propojení dokumentů. Pokud toto _id
popisuje jiný dokument a vlastnosti jsou vlastní atributy pro tento dokument ve vztahu k tomuto propojenému dokumentu, pak je to také v pořádku.
ObjectId
je stále poměrně velké, takže je třeba vzít v úvahu menší, méně unikátní id nebo nepoužívat _id
vůbec pro dílčí dokumenty.
U indexů to ve skutečnosti nefunguje jinak než standardní _id
pole v dokumentu samotném a jedinečný index napříč polem by měl fungovat v celé kolekci (závisí na scénáři, otestujte své dotazy).
Poznámka:MongoDB nepřidá _id
na dílčí dokumenty pro vás.