从mysql转换为mongodb后,我应该更改表的结构吗?

时间:2018-08-22 06:56:55

标签: mysql mongodb

我一直在使用mysql,但是我对mongodb感兴趣,但是我不知道如何转移数据库 例如:

学生

------------        ----------     
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的最佳方式,还是我不应该更改结构并使用其他方式进行查询?

1 个答案:

答案 0 :(得分:1)

您可能应该在迁移到MongoDB时更改MySQL结构。
您上面提到的更改后的结构足够好。

您还可以在学生文档中包含 class_name ,在 take_class 中包含 class_id ,以避免调用另一个文档搜索 class_name

如果不更改结构,则使用MongoDB毫无意义,因为它的行为类似于关系数据库。
请记住,文档可以嵌套在MongoDB或任何NoSQL DB中,并为我们使用方便。这是在MySQL上使用MongoDB的最大优势之一。