Jeg går ud fra:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Type struktur for dette spørgsmål.
Ikke normalt. _id
s er unikke identifikatorer for enheder. Som sådan, hvis du ønsker at tilføje _id
inden for et underdokumentobjekt, så har du måske ikke normaliseret dine data særlig godt, og det kan være et tegn på en grundlæggende fejl i dit skemadesign.
Underdokumenter er designet til at indeholde gentagne data for det pågældende dokument, dvs. adresserne eller en bruger eller noget.
Når det er sagt _id
er ikke altid en dårlig ting at tilføje. Tag det eksempel, jeg lige har nævnt med adresser. Forestil dig, at du skulle have et indkøbskurvsystem, og du (af en eller anden grund) ikke kopierede adressen til ordredokumentet, så ville du bruge et _id
eller en anden identifikator for at få det underdokument ud.
Du skal også overveje at linke dokumenter. Hvis det _id
beskriver et andet dokument, og egenskaberne er brugerdefinerede attributter for det dokument i forhold til det linkede dokument, så er det også okay.
Et ObjectId
er stadig ret stor, så det er noget, der skal tages i betragtning i forhold til et mindre, mindre unikt id eller ikke ved at bruge et _id
overhovedet for underdokumenter.
For indekser fungerer det ikke rigtig anderledes end standarden _id
felt på selve dokumentet og et unikt indeks på tværs af feltet skulle fungere på tværs af samlingen (scenarieafhængig, test dine forespørgsler).
NB:MongoDB tilføjer ikke et _id
til underdokumenter til dig.