![42fcdab831556197c7e6a6bc623dbe2b.png](https://i-blog.csdnimg.cn/blog_migrate/0d749a17fdf37ff6c07e670f5dd7de5e.png)
1. 什么是mongodb
MongoDB 不是芒果(mango),它在拉丁文中的原意是巨大的意思。如果用一句话来概括的话:MongoDB是一个高可用、分布式、灵活模式的文档数据库,用于大容量数据存储。文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。
2. 数据在mongodb中和mysql数据库中的区别
mysql数据库需要你把一个数据对象,拆分成零部件,然后存到各个相应的表里,需要的是最后把它拼起来。
而MongoDB的文档模式,与这个模式大不相同。由于我们的存储单位是一个文档,可以支持数组和嵌套文档,所以很多时候你直接用一个这样的文档就可以涵盖这个客户相关的所有个人信息。
下面可以用来存储pepole的记录示例来展示下数据在mongodb中和mysql数据库中的区别:
![3019b70b33bf975f70ecb29658cbd903.png](https://i-blog.csdnimg.cn/blog_migrate/3dc0d1af487c03cbb8ab12fabb251989.png)
虽然MongoDB的模型和关系型数据库模型截然不同,但是关系型数据库的一些必不可少的功能如动态查询、二级索引、聚合、关联等在MongoDB中也有非常完善的支持。
3. mongodb的优点
1.读写效率高:由于文档模型把相关数据集中在一块,在普通机械盘上读数据的时候不用花太多时间去定位磁头,因此在IO性能上有先天独厚的优势
2.可扩展能力强:关系型数据库很难做分布式的原因就是多节点海量数据关联有巨大的性能问题。如果不考虑关联,数据分区分库,水平扩展就比较简单;
3.动态模式:文档模型支持可变的数据模式,不要求每个文档都具有完全相同的结构,例如在同一个文档中支持同一个字段拥有不同的数据类型,对很多异构数据场景支持非常好。
4.模型自然:文档模型最接近于我们熟悉的对象模型,支持数组和嵌套对象作为值。从内存到存储,无需经过ORM的双向转换,性能上和理解上都很自然易懂。
5.强大的查询语言:丰富而富有表现力的查询语言,使您可以按任意字段进行过滤和排序,无论它在文档中有多嵌套。支持聚合和其他现代用例,例如基于地理的搜索,图形搜索和文本搜索。查询本身就是JSON,因此很容易组合。不再需要串联字符串来动态生成SQL查询。
4. mongodb的缺点
与关系型数据库,比如mysql截然不同的查询语法,需要重新学习mongodb的操作语法