1. 与传统RMDBS的对比
MongoDB作为一款NOSQL数据库,相比传统的关系型数据库如MySQL的一大特点就是数据模型上的无模式定义,在获取灵活数据模型的同事,又在特定的环境中表现出绝佳的性能。学习MongoDB从数据的结构定义上入手可与MySQL做对比如下:
mysql ---> mongodb
database --> database
table -->
collections
documents
columns -->
fields
indexs --> indexs
其中MongoDB中的cursors指查询时返回的一个结果集的指针而非结果,利用该指针可以在结果集的基础上做一些操作如:排序、计数、跨行查找等,无需把真实数据拖下来而是在真实数据上操作。通过 cursor 来操作,读操作会被延迟到需要实际数据的时候才会执行。
在MongoDB中db由collections组成,collections由documents组成并且可被index提高查找和排序的性能,documents由fields组成。
2. 数据操作
a. 查询,利用选择器(一个条件判断的json对象,类似于mysql中的where判断)
find
count
remove
b. 更新
update: $set、
upsert、
multi
c. cursor:
排序 sort()
计数 count()
分页 skip().limit()
3. 数据建模
no joins:数据表链接(join)意味着无法支持很好的水平扩展
数组和内嵌文档:支持数组作为文档的基本对象,在处理多对一和多对多的情况下非常方便。
比如一个人属于多个部门,则只需要部分字段存储成数组形式即可。
反规格化:解决对性能敏感的问题或是需要做快照的数据
约束:一个独立文档的大小当前被限制在 16MB
集合设计:把内容划分为多个集合还是在一个集合中内嵌多个文档,取决于你想再一次查询中获取什么内容
参考资料:《the-little-mongodb-book》--karlseguin