Quantas atividades um único projeto pode ter? Se não houver limite, é melhor criar uma coleção de nível raiz para atividades. No MongoDB, o tamanho máximo do documento BSON é 16 MB . Sendo assim, talvez você não consiga armazenar todos os projetos e suas atividades em um único documento (documento da organização).
Eu criaria 3 coleções a saber - organizações, projetos e atividades.
- Cada organização deve ter um documento em organizações coleção semelhante à que você tem no Firestore.
- Cada projeto deve ter um documento em projetos coleção contendo um campo "organizationID" para que você possa consultar projetos de uma organização específica usando seu ID. Isso é equivalente a um documento em sua subcoleção de projetos. Cada projeto também deve ter seu próprio ID exclusivo.
- Cada atividade deve ter um documento em atividades coleção contendo um campo "projectID" para que as atividades de um projeto específico possam ser recuperadas.
Adicionei esses
organizationID
adicionais , projectID
campos mesmo que você tenha _id
caso você queira ter os IDs de documento do Firestore para facilitar as consultas lado a lado. Você não precisa se preocupar com 16 MB limite de tamanho do documento dessa forma e será mais fácil consultar projetos e atividades desde que você tenha os IDs corretos.
Atividades de consulta de um determinado projeto:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Depois disso, você decide como deseja escrever consultas com projeções, agregação etc.