Ile działań może mieć jeden projekt? Jeśli nie ma limitu, lepiej jest utworzyć kolekcję na poziomie głównym dla działań. W MongoDB maksymalny rozmiar dokumentu BSON to 16 MB . W związku z tym możesz nie być w stanie przechowywać wszystkich projektów i ich działań w jednym dokumencie (dokumencie organizacyjnym).
Stworzyłbym 3 kolekcje, a mianowicie - organizacje, projekty i działania.
- Każda organizacja powinna mieć dokument w organizacjach kolekcja podobna do tej, którą masz w Firestore.
- Każdy projekt powinien mieć dokument w projektach kolekcja zawierająca pole „organizationID”, dzięki czemu można wysyłać zapytania do projektów określonej organizacji przy użyciu ich identyfikatorów. Jest to odpowiednik dokumentu w podkolekcji projektów. Każdy projekt musi mieć również swój własny unikalny identyfikator.
- Każde działanie powinno mieć dokument w działaniach kolekcja zawierająca pole "projectID", dzięki czemu można pobrać działania określonego projektu.
Dodałem te dodatkowe organizationID
, projectID
pola, nawet jeśli masz _id
na wypadek, gdybyś chciał mieć identyfikatory dokumentów Firestore, aby ułatwić wyszukiwanie obok siebie.
Nie musisz się martwić o 16 MB W ten sposób ogranicz rozmiar dokumentu i łatwiej będzie wyszukiwać zarówno projekty, jak i działania, o ile masz prawidłowe identyfikatory.
Zapytanie o działania określonego projektu:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Następnie od Ciebie zależy, jak chcesz pisać zapytania z prognozami, agregacją itp.