MongoDB是一个又新又旧的词,不管你用还是不用,了解一下也是应该的。
因为不同于 MySQL、Oracle、SQLServer 这些“经典数据库”。MongoDB 是一种新的数据库管理软件。
在这之前,如果你认为“MySQL 是一种数据库”,那就应该重新了解一下数据库的概念了。
最明显的不同是,mongo不能使用 sql 语句。
优点
我认为,mongo 最大的优点就是:没有固定的表结构,存取数据比较灵活。
比如有这样一堆数据:
学校名称 | 学生姓名 |
---|---|
丰县小学 | 小明 |
丰县小学 | 小强 |
丰县小学 | 小华 |
岳庄小学 | 小红 |
岳庄小学 | 阿红 |
岳庄小学 | 阿华 |
如果使用 Mysql 这类数据库,也许得创两个表吧:
学校表
id | 学校名称 |
---|---|
1 | 丰县小学 |
2 | 岳庄小学 |
学生表
学校id | 学生名称 |
---|---|
1 | 小明 |
1 | 小强 |
1 | 小华 |
2 | 小红 |
2 | 阿红 |
2 | 阿华 |
取数据的时候,还得连表,改数据就更麻烦了。
但是在 mongo 里:
school: [{
name: '丰县小学',
stu_list: ['小明', '小强', '小华']
}, {
name: '岳庄小学',
stu_list: ['小红', '阿红', '阿华']
}]
它的数据有层级结构,支持数组、枚举。
大项目不敢说,如果你在做一个小项目,而且需求不稳定(这世界上还有稳定需求的项目吗?),可能经常要改表结构,那么 mongo 非常合适。
- 小项目不需要那么严格(严格 和 死板 是界限很模糊的两个词)
- mongo 没有表结构,随便改
缺点
mongo 的优点就是它的缺点:没有固定的表结构。
数据的结构不固定,当数据多了,会不会很乱呢?
如果没有经验丰富的人领导,那肯定会很乱。
当然,一切看需求,没有完美,只有合适。