MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Sind mongodb-Unterdokumente äquivalent zu Firestore-Untersammlungen?

Wie viele Aktivitäten kann ein einzelnes Projekt haben? Wenn es keine Begrenzung gibt, ist es besser, eine Sammlung auf Stammebene für Aktivitäten zu erstellen. In MongoDB beträgt die maximale BSON-Dokumentgröße 16 MB . Daher können Sie möglicherweise nicht alle Projekte und ihre Aktivitäten in einem einzigen Dokument (Organisationsdokument) speichern.

Ich würde 3 Sammlungen erstellen, nämlich Organisationen, Projekte und Aktivitäten.

  1. Jede Organisation sollte ein Dokument in Organisationen haben ähnliche Sammlung wie in Firestore.
  2. Jedes Projekt sollte ein Dokument in projects haben Sammlung, die ein Feld "organizationID" enthält, sodass Sie Projekte einer bestimmten Organisation anhand ihrer ID abfragen können. Dies entspricht einem Dokument in Ihrer Projektuntersammlung. Jedes Projekt muss außerdem eine eigene eindeutige ID haben.
  3. Jede Aktivität sollte ein Dokument in Aktivitäten haben Sammlung, die ein Feld "projectID" enthält, damit Aktivitäten eines bestimmten Projekts abgerufen werden können.

Ich habe diese zusätzliche organizationID hinzugefügt , projectID Felder, obwohl Sie _id haben nur für den Fall, dass Sie Firestore-Dokument-IDs für einfachere parallele Abfragen haben möchten.

Um 16 MB müssen Sie sich keine Sorgen machen Dokumentgrößenbegrenzung auf diese Weise und es wird einfacher sein, sowohl Projekte als auch Aktivitäten abzufragen, solange Sie die richtigen IDs haben.

Aktivitäten eines bestimmten Projekts abfragen:

await db.collection("activities").find({projectID: "myProjectID"}).toArray()

Danach liegt es an Ihnen, wie Sie Abfragen mit Projektionen, Aggregation usw. schreiben möchten.