MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongo _id per l'array di documenti secondari

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.