本文主要参考《MongoDB 实战》第二版
1.文档数据模型
MongoDB以二进制JSON格式存储文档数据,或者叫做BSON。BSON有相似的数据结构,它是专门为文档存储设计。当查询MongoDB并返回结果时,这些数据就会转换为易于阅读的数据格式。
关系型数据库包含表,MongoDB拥有集合。即关系型数据库在表的行里保存数据,而MongoDB在集合的文档里保存数据。集合是MongoDB中非常重要的概念,集合中的数据存储在磁盘上,而且大部分查询需要指定查询的目标集合。面向文档的数据模型非常适合表示集中形式的数据,允许我们处理整个数据,而这些数据只包含在一个数据库对象中。
MongoDB在支持丰富的数据结构外,文档不需要遵守严格的数据定义schema。我们在关系型数据库存储数据时,每个表都有严格的schema,指定每个列的数据类型。如果某行需要扩展字段,就必须修改表结构。MongoDB的文档放在集合中,集合不需要定义schema,理论上,每个集合中的文档都可以拥有不同的数据结构,实际上,集合中的文档都是相对一致的。
2.ad hoc查询
系统支持主动查询模式(ad hoc queries)是指不需要事先定义系统接收何种查询,关系型数据库忠实地执行格式正确的包含各种条件的SQL查询,而键值存储的查询只支持一个领域的查询:键Key,键-值存储数据库牺牲丰富的查询功能来换取更简单的伸缩模型。MongoDB的设计目标之一是保留大部分关系型数据库的功能。
3.索引