mysql - 从 mysql 转换为 mongodb 后我应该改变表的结构吗

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

最佳答案

在迁移到 MongoDB 时,您可能应该更改 MySQL 结构。
你上面提到的改变的结构已经足够好了。

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

如果不更改结构,使用 MongoDB 将没有任何意义,因为它的行为就像关系数据库。
请记住,文档可以嵌套在 MongoDB 或任何 NoSQL DB 中,并方便地使用它。这是使用 MongoDB 相对于 MySQL 的最大优势之一。

关于mysql - 从 mysql 转换为 mongodb 后我应该改变表的结构吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51961291/

相关文章:

mongodb - Mongoose 分页和过滤器

mongodb - Spring Data Mongo 可以只更新文档中的脏字段吗?

javascript - 统计mysql中的重复数据

MYSQL从select语句插入多行

mysql - LOAD DATA LOCAL INFILE 在 MySQL 中只导入一行

php - mysql更新语句改变了我的参数值

javascript - 如何更新 MongoDB 中已有的字段

node.js - Mongodb 如何查询特定文档的数组子集

mysql - 如何选择MongoDB和Cassandra数据库

MySQL:额外的 id 列与性能