Combien d'activités un seul projet peut-il avoir ? S'il n'y a pas de limite, il vaut mieux créer une collection au niveau racine pour les activités. Dans MongoDB, la taille maximale des documents BSON est de 16 Mo . Cela étant, vous ne pourrez peut-être pas stocker tous les projets et leurs activités dans un seul document (document d'organisation).
Je créerais 3 collections à savoir - organisations, projets et activités.
- Chaque organisation doit avoir un document dans organisations collection similaire à celle que vous avez dans Firestore.
- Chaque projet doit avoir un document dans projets collection contenant un champ "organizationID" afin que vous puissiez interroger les projets d'une organisation spécifique à l'aide de leur ID. C'est l'équivalent d'un document dans votre sous-collection de projets. Chaque projet doit également avoir son propre ID unique.
- Chaque activité doit avoir un document dans activités collection contenant un champ "projectID" afin que les activités d'un projet spécifique puissent être récupérées.
J'ai ajouté ces organizationID
supplémentaires , projectID
champs même si vous avez _id
juste au cas où vous voudriez avoir des ID de document Firestore pour faciliter les requêtes côte à côte.
Vous n'avez pas à vous soucier de 16 Mo limiter la taille du document de cette façon et il sera plus facile d'interroger les projets et les activités tant que vous avez les bons ID.
Interroger les activités d'un certain projet :
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Par la suite c'est à vous de décider comment vous voulez écrire les requêtes avec projections, agrégation, etc.