Quante attività può avere un singolo progetto? Se non ci sono limiti, è meglio creare una raccolta a livello di root per le attività. In MongoDB, la dimensione massima del documento BSON è 16 MB . Ciò premesso potresti non essere in grado di archiviare tutti i progetti e le loro attività in un unico documento (documento organizzativo).
Creerei 3 raccolte in particolare:organizzazioni, progetti e attività.
- Ogni organizzazione dovrebbe avere un documento in organizzazioni raccolta simile a quella che hai in Firestore.
- Ogni progetto dovrebbe avere un documento in progetti raccolta contenente un campo "organizationID" in modo da poter interrogare i progetti di un'organizzazione specifica utilizzando il loro ID. Questo è l'equivalente di un documento nella sottoraccolta dei tuoi progetti. Ogni progetto deve avere anche il proprio ID univoco.
- Ogni attività dovrebbe avere un documento in attività raccolta contenente un campo "projectID" in modo da poter recuperare le attività di un progetto specifico.
Ho aggiunto questi organizationID
aggiuntivi , projectID
campi anche se hai _id
nel caso in cui desideri avere gli ID documento Firestore lì per query side-by-side più semplici.
Non devi preoccuparti di 16 MB limite di dimensione del documento in questo modo e sarà più facile interrogare sia i progetti che le attività purché tu abbia gli ID corretti.
Attività di interrogazione di un determinato progetto:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Successivamente sta a te decidere come vuoi scrivere query con proiezioni, aggregazioni, ecc.