Jag antar:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Typ av struktur för denna fråga.
Inte normalt. _id
s är unika identifierare för enheter. Som sådan om du vill lägga till _id
inom ett underdokumentobjekt så kanske du inte har normaliserat dina data särskilt bra och det kan vara ett tecken på ett grundläggande fel i din schemadesign.
Underdokument är utformade för att innehålla återkommande data för det dokumentet, d.v.s. adresserna eller en användare eller något.
Som sagt _id
är inte alltid en dålig sak att lägga till. Ta exemplet jag just angav med adresser. Föreställ dig att du skulle ha ett kundvagnssystem och (av någon anledning) att du inte replikerade adressen till beställningsdokumentet, då skulle du använda ett _id
eller någon annan identifierare för att få ut det underdokumentet.
Du måste också ta hänsyn till att länka dokument. Om det _id
beskriver ett annat dokument och egenskaperna är anpassade attribut för det dokumentet i förhållande till det länkade dokumentet, då är det okej också.
Ett ObjectId
är fortfarande ganska stor så det är något att ta hänsyn till om ett mindre, mindre unikt id eller att inte använda ett _id
alls för underdokument.
För index fungerar det egentligen inte annorlunda än standarden _id
fältet på själva dokumentet och ett unikt index över hela fältet bör fungera i hela samlingen (scenarioberoende, testa dina frågor).
OBS:MongoDB lägger inte till ett _id
till underdokument åt dig.