MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Проектиране на релации много към много в MongoDB (вместо релационни таблици)

Това е случай на наличие на данни с връзка много към много. Мисля, че във вашата база данни има няколко хиляди студенти и няколкостотин курса.

Като начало мога да използвам следния дизайн с подробности за курса, вградени във всеки ученик като масив от поддокументи, наречени courses .

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

- courses collection
id:
name:
description:

Обърнете внимание, че идентификаторът и името на курса се съхраняват и в двете колекции. Това е дублиране на данни. Това трябва да е наред, тъй като дублираните детайли не се променят често (или може изобщо да не се променят).

Заявка за всички курсове, в които е записан студент, например:db.students.find( { name: "John" } ) . Това ще върне един студентски документ със съответстващото име и всички курсове (полето за масив). Вижте db.collection.find .

Изпратете запитване към всички студенти, записани в определен курс:db.students.find( { "courses.name": "Java Programming" } ) . Това ще върне всички студентски документи, чието име на курса отговаря на критериите „Програмиране на Java“. Вижте Запитване до масив от вградени документи .

Освен това можете да използвате проекция за изключване и включване полета от резултата.

БЕЛЕЖКИ:

  • Можете да вградите информация за студентите в колекцията от курсове, вместо курсовете в студентите. Заявките ще бъдат подобни на горните, но вие ще правите заявки в колекцията от курсове. Зависи от вашия случай на употреба.
  • Можете просто да съхраните полето за идентификационен номер на курса в масива курсове на колекцията студенти; това е случаят, когато полето за име на курса се променя често. Заявките ще използват Aggregation $lookup (операция „присъединяване“), за да получите курса и от колекцията от курсове.
  • Информация за Дизайн на модел на данни за базирани на документи MongoDB данни.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Boot и как да конфигурирам подробности за връзката с MongoDB?

  2. Разпространение на MongoDB в EC2 региони

  3. Как да избегнем transparent_hugepage/defrag предупреждение от mongodb?

  4. Заявете MongoDB с израз на регулярен израз срещу ObjectId

  5. Извадете поддокументите от колекцията в сборния конвейер