Колко дейности може да има един проект? Ако няма ограничение, тогава е по-добре да създадете колекция на основно ниво за дейности. В MongoDB максималният размер на BSON документ е 16 MB . Поради това може да не успеете да съхраните всички проекти и техните дейности в един документ (организационен документ).
Бих създал 3 колекции, а именно - организации, проекти и дейности.
- Всяка организация трябва да има документ в организации колекция, подобна на тази, която имате във Firestore.
- Всеки проект трябва да има документ в projects колекция, съдържаща поле "organizationID", така че можете да правите заявки за проекти на конкретна организация, като използвате техния ID. Това е еквивалент на документ във вашата подколекция от проекти. Всеки проект трябва също да има свой собствен уникален идентификатор.
- Всяка дейност трябва да има документ в активности колекция, съдържаща поле "projectID", така че дейностите на конкретен проект могат да бъдат извлечени.
Добавих тези допълнителни organizationID
, projectID
полета, въпреки че имате _id
само в случай, че искате да имате идентификатори на документи на Firestore там за по-лесни успоредни заявки.
Не е нужно да се притеснявате за 16 MB ограничаване на размера на документа по този начин и ще бъде по-лесно да правите заявки за проекти и дейности, стига да имате правилните идентификатори.
Дейности по запитване на определен проект:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
След това зависи от вас как искате да пишете заявки с прогнози, агрегиране и т.н.