sql >> Database >  >> NoSQL >> MongoDB

Zijn mongodb-subdocumenten gelijk aan Firestore-subcollecties?

Hoeveel activiteiten kan een enkel project hebben? Als er geen limiet is, kunt u beter een verzameling op rootniveau maken voor activiteiten. In MongoDB is de maximale BSON-documentgrootte 16 MB . Het is daarom mogelijk dat u niet alle projecten en hun activiteiten in één document (organisatiedocument) kunt opslaan.

Ik zou 3 collecties maken, namelijk - organisaties, projecten en activiteiten.

  1. Elke organisatie moet een document hebben in organisaties verzameling vergelijkbaar met die in Firestore.
  2. Elk project moet een document hebben in projecten verzameling met een veld "organisatie-ID", zodat u projecten van een specifieke organisatie kunt opvragen met behulp van hun ID. Dit is het equivalent van een document in uw subcollectie projecten. Elk project moet ook zijn eigen unieke ID hebben.
  3. Elke activiteit moet een document hebben in activiteiten verzameling met een veld "projectID" zodat activiteiten van een specifiek project kunnen worden opgehaald.

Ik heb die extra organizationID toegevoegd , projectID velden, ook al heb je _id voor het geval u Firestore-document-ID's daar wilt hebben voor eenvoudigere zoekopdrachten naast elkaar.

U hoeft zich geen zorgen te maken over 16 MB Op deze manier wordt de documentgrootte beperkt en is het gemakkelijker om zowel projecten als activiteiten te doorzoeken zolang u de juiste ID's heeft.

Opvragen van activiteiten van een bepaald project:

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

Daarna is het aan jou hoe je queries wilt schrijven met projecties, aggregatie, etc.




  1. Verwijder duplicaten op mongodb

  2. Mongoose met unieke boolean van true

  3. Hoe waarden te beperken met het gegevenstype Gemengd in Mongoose?

  4. Welke aggregatiecursormethoden worden ondersteund door Nodejs-stuurprogramma's?