Ik neem aan:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Type structuur voor deze vraag.
Normaal niet. _id
s zijn unieke identificatiecodes voor entiteiten. Dus als u _id
. wilt toevoegen binnen een subdocumentobject, dan heeft u uw gegevens mogelijk niet goed genormaliseerd en kan dit een teken zijn van een fundamentele fout in uw schemaontwerp.
Subdocumenten zijn ontworpen om herhalende gegevens voor dat document te bevatten, d.w.z. de adressen of een gebruiker of zoiets.
Dat gezegd hebbende _id
is niet altijd een slechte zaak om toe te voegen. Neem het voorbeeld dat ik net noemde met adressen. Stel je voor dat je een winkelwagensysteem zou hebben en (om de een of andere reden) je het adres niet naar het besteldocument hebt gekopieerd, dan zou je een _id
gebruiken of een andere identificatie om dat subdocument eruit te halen.
Ook moet u rekening houden met het koppelen van documenten. Als dat _id
een ander document beschrijft en de eigenschappen zijn aangepaste attributen voor dat document in relatie tot dat gekoppelde document, dan is dat ook goed.
Een ObjectId
is nog steeds behoorlijk groot, dus dat is iets om rekening mee te houden bij een kleinere, minder unieke id of het niet gebruiken van een _id
helemaal niet voor subdocumenten.
Voor indexen werkt het niet echt anders dan de standaard _id
veld op het document zelf en een unieke index in het hele veld zouden in de hele collectie moeten werken (afhankelijk van het scenario, test uw zoekopdrachten).
NB:MongoDB voegt geen _id
toe naar subdocumenten voor u.