sql >> Database teknologi >  >> NoSQL >> MongoDB

Er mongodb-underdokumenter svarende til Firestore-undersamlinger?

Hvor mange aktiviteter kan et enkelt projekt have? Hvis der ikke er nogen grænse, er det bedre at oprette en samling på rodniveau til aktiviteter. I MongoDB er den maksimale BSON-dokumentstørrelse 16 MB . Derfor er du muligvis ikke i stand til at gemme alle projekter og deres aktiviteter i et enkelt dokument (organisationsdokument).

Jeg ville oprette 3 samlinger nemlig - organisationer, projekter og aktiviteter.

  1. Hver organisation skal have et dokument i organisationer samling, der ligner den, du har i Firestore.
  2. Hvert projekt skal have et dokument i projekter samling, der indeholder et felt "organisations-ID", så du kan forespørge projekter fra en bestemt organisation ved hjælp af deres id. Dette svarer til et dokument i dit projekts undersamling. Hvert projekt skal også have sit eget unikke ID.
  3. Hver aktivitet skal have et dokument i aktiviteter samling, der indeholder et felt "projectID", så aktiviteter i et specifikt projekt kan hentes.

Jeg har tilføjet disse ekstra organizationID , projectID felter, selvom du har _id bare hvis du gerne vil have Firestore-dokument-id'er der for nemmere side-by-side-forespørgsler.

Du behøver ikke bekymre dig om 16 MB dokumentstørrelsesbegrænsning på denne måde, og det bliver nemmere at forespørge både projekter og aktiviteter, så længe du har de korrekte id'er.

Forespørgsel efter aktiviteter i et bestemt projekt:

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

Derefter er det op til dig, hvordan du vil skrive forespørgsler med projektioner, aggregering osv.




  1. Udløbstidsekspres og redis session

  2. MongoDB-indeksering for en Parse Server-applikation

  3. Hvordan kender man master/slave status for redis?

  4. Understøtter Moongoose 3.8.8 $position operator?