前言
因为工作关系,我参加工作以来一直接触的数据库是mongoDB,因此想通过记笔记的形式将mongoDB常用的操作、案例、问题等记录下来,以便后续查看。
正文
mongoDB是什么?
mongoDB是一种数据库,就像MySQL、oracle一样,都是用来存放数据的工具,不同的是,MongoDB是一种非关系型数据库。关系型数据库与非关系型数据库最直观的区别就是,非关系型数据库没有所谓的“表”结构。那非关系型数据库中没有表结构,那数据存放在哪呢?此时我们需要引入一个新的名词,集合。
我们以MySQL和MongoDB为例。以往,我们使用MySQL时,需要先创建表才能向表中添加数据,给表添加一个字段则需要更新表结构;而在mongoDB中,不需要预先创建“表”,只需要指定“集合”,直接向其中插入数据即可。既然MongoDB中没有表结构,那我是不是可以每条记录存放不同的字段和值呢?是的。集合中的每条记录都是一个类似json格式的对象,称为“文档”(Document)。
上面是从官网截的图,这只是一条数据,从中可以看出,一条数据中不仅可以包含普通的字段和值,还可以包含数组。那数组里是否可以再存多个Document对象呢?当然可以。此处可发挥你的想象,只要你想,你可以把一个公司的层级结构存入同一条数据中,虽然不建议这样做(不好维护),但理论上是可行的。而如果用MySQL,相同场景只能做多个表来存放。
经验之谈吧,因为同一个集合中的记录之间,并没有什么强制性的关联,所以为了便于业务处理,我们往往将字段相同的数据存入同一个集合中。这样后续在对数据统计、分库分表等使用场景下,能大大减少我们的工作的复杂度。
ps:
三年前进项目组,我们用的主数据库就是MongoDB,完全没有使用MySQL,而市面上几乎没有使用MongoDB作为主数据库的案例,更要命的是数据库里存的数据全部是金额这种对数据要求极为严苛的数据,如何保证系统平稳运行,金额一分不差,对各个成员来说都是一种挑战。当然其中也遇到过大大小小各种问题,后续有时间了继续更新。