я должен изменить структуру таблиц после преобразования в Mongodb из MySQL

0

я всегда использую mysql, но меня интересует mongodb, но я не знаю, как перенести мой db ex:

ученик

------------        ----------     
name               student_id      
------------        ----------      
james               1
jim                 2


class
------------        ----------
class_name          class_id
------------        ----------
math                1
science             2
computer            3


takeclass
------------        ----------     
student_id           class_id
------------        ----------     
1                     1
1                     2
2                     1
2                     3

когда я хочу имя класса, которое принимает jim, я использую sql

select c.class_name 
from student s, class c,takeclass  t
where s.name='jim' and s.student_id=t.student_id and t.class_id =c.class_id

я должен изменить его в mongodb как

------------        ----------     ----------
student_fname       student_id      takeclass
------------        ----------     ---------- 
james               1                1,2
jim                 2                1,3


class
------------        ----------
class_name          class_id
------------        ----------
math                1
science             2
computer            3

let student=mongoclient.collection('student').findOne({student_fname:"jim"})
let classname=mongoclient.collection('class').find({class_id:{$in:student.class_id.split(',')}})

я не знаю, это лучший способ использовать mongodb, или я не должен изменять структуру и использовать другой способ запроса?

  • 0
    MongoDB - это NoSQL, документно-ориентированная база данных с совершенно другим подходом. Во-первых, вам нужно тщательно спроектировать схему MongoDB, которая могла бы использовать лучшие возможности MongoDB.
Теги:

1 ответ

1

Вероятно, вы должны изменить структуру MySQL при миграции на MongoDB.
Измененная структура, о которой вы упомянули выше, достаточно хороша.

Вероятно, вы также можете включить class_name в документ студента вместе с class_id в take_class, чтобы избежать вызова другого документа для поиска class_name.

Если вы не измените структуру, использование MongoDB не будет иметь никакого смысла, поскольку оно будет вести себя как реляционная БД.
Помните, что документы могут быть вложены в MongoDB или любую базу данных NoSQL и использовать их для нашего удобства. Это одно из самых больших преимуществ использования MongoDB над MySQL.

  • 0
    спасибо Гаривинторп! , у меня все еще есть проблема с помещением class_name в студенческий документ, если class_name изменяется, мне нужно обновить весь документ, который содержит поле class_name, это должно произойти?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню