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

I sottodocumenti mongodb sono equivalenti alle sottoraccolte di Firestore?

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à.

  1. Ogni organizzazione dovrebbe avere un documento in organizzazioni raccolta simile a quella che hai in Firestore.
  2. 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.
  3. 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.