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

Design af mange-til-mange-relationer i MongoDB (i stedet for relationelle tabeller)

Dette er et tilfælde af at have data med mange-til-mange-relation. Jeg vil tro, at der er få tusinde studerende og et par hundrede kurser i din database.

Til at starte med kan jeg bruge følgende design med kursusdetaljer indlejret med hver elev som en række underdokumenter kaldet courses .

- students collection
id:
name:
courses: [ { id: 1, name: },  { id: 5, name: }, ... ]

- courses collection
id:
name:
description:

Bemærk, kursus-id og navn er gemt i begge samlinger. Dette er duplikering af data. Dette burde være i orden, da de duplikerede detaljer ikke ændres ofte (eller måske slet ikke ændres).

Forespørg alle kurser, som en studerende er tilmeldt, for eksempel:db.students.find( { name: "John" } ) . Dette vil returnere ét elevdokument med det matchende navn og alle kurserne (arrayfeltet). Se db.collection.find .

Forespørg alle elever, der er tilmeldt et bestemt kursus:db.students.find( { "courses.name": "Java Programming" } ) . Dette vil returnere alle de studerendes dokumenter, som har kursusnavnet, der matcher kriterierne "java programmering". Se Forespørg en række indlejrede dokumenter .

Yderligere kan du bruge projektion at ekskludere og inkludere felter fra resultatet.

BEMÆRKNINGER:

  • Du kan indlejre elevoplysninger i kursussamlingen i stedet for kurserne i eleverne. Forespørgslerne vil ligne ovenstående, men du vil forespørge på kursussamlingen. Det afhænger af din brugssituation.
  • Du kan bare gemme kursus-id-feltet i kurser-arrayet i elevsamlingen; dette er tilfældet, hvor du ofte skifter kursusnavn. Forespørgslerne bruger Aggregation $lookup (en "join" operation) for at få kurset og fra kursussamlingen.
  • Oplysninger om Datamodeldesign for dokumentbaserede MongoDB-data.



  1. Hvordan laver man rå mongodb-operationer i mongoose?

  2. vente på, at andre implementeringer begynder at køre, før andre kan oprettes?

  3. MongoDB NU Aggregationsvariabel

  4. Problemer i forbindelse mellem Node.js og MongoDB container ved brug af miljø var. i Docker Compose