MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy dokumenty podrzędne mongodb są równoważne podzbiorom Firestore?

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.

  1. Każda organizacja powinna mieć dokument w organizacjach kolekcja podobna do tej, którą masz w Firestore.
  2. 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.
  3. 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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kopiuj bazę danych w Mongoose

  2. Nie można połączyć się z MongoDB przez node.js w Docker

  3. Jak zapobiec _t i _v podczas wstawiania do MongoDB?

  4. Jak uzyskać listę samych ObjectId używających pymongo?

  5. Czy zapytania geoprzestrzenne działają na tablicach? ( $geoWithin, $geoIntersects )