Presumo:
{
g: [
{ _id: ObjectId(), property: '' },
// next
]
}
Tipo di struttura per questa domanda.
Non normalmente. _id
s sono identificatori univoci per le entità. In quanto tale, se stai cercando di aggiungere _id
all'interno di un oggetto di sottodocumento, potresti non aver normalizzato i tuoi dati molto bene e potrebbe essere un segno di un difetto fondamentale nella progettazione del tuo schema.
I documenti secondari sono progettati per contenere dati ripetuti per quel documento, ad esempio gli indirizzi o un utente o qualcosa del genere.
Detto questo _id
non è sempre una cosa negativa da aggiungere. Prendi l'esempio che ho appena affermato con gli indirizzi. Immagina di avere un sistema di carrello degli acquisti e (per qualche motivo) non hai replicato l'indirizzo nel documento dell'ordine, quindi avresti utilizzato un _id
o qualche altro identificatore per estrarre quel documento secondario.
Inoltre devi prendere in considerazione il collegamento di documenti. Se quel _id
descrive un altro documento e le proprietà sono attributi personalizzati per quel documento in relazione a quel documento collegato, quindi va bene lo stesso.
Un ObjectId
è ancora abbastanza grande, quindi è qualcosa da prendere in considerazione su un ID più piccolo, meno univoco o non utilizzando un _id
affatto per i documenti secondari.
Per gli indici non funziona in modo diverso dallo standard _id
campo sul documento stesso e un indice univoco in tutto il campo dovrebbe funzionare in tutta la raccolta (dipende dallo scenario, verifica le tue query).
NB:MongoDB non aggiungerà un _id
ai documenti secondari per te.