mongodb的高级操作(游标、聚合)
mongodb的游标
mongodb的游标类似c#的延迟加载、类似hibernate的懒加载
1.定义list 接受find()的结果集,默认find()的数据是100条数据或者是4M的数据,当两者谁比较小,则返回哪个方案结果集。
2.遍历结果集
遍历结果集的方法有两个
一个是for
一个是next
增强部分 sort(排序) skip(跳过) limit(限制条数)
sort({'age':1,'name':1}) age是字段的排序,1是正序,-1是倒叙
skip(2) 跳过2个, 1,2,3,4 skip(2) ==>{3,4}
limit(2) 只取两条
当出现db.person.find().sort().skip().limit()多条件同时存在的时候, 执行的顺序是 find()-->sort()-->skip()-->limit()
skip+limit的效果相当于mysql中的limit(1,2);
查询分为普通查询和包装查询,我们上面演示的各种查询方式都是普通查询
下面我演示一个包装查询
我们的所有查询在发送到数据库端时,都被提前转换成了包装形式!包装形式就是额外使用了一些键,如上述的"$query","$orderby"。我们还有如下一些有用的键可用:
1. $maxscan : integer 指定查询时最多扫描文档的数量
2. $min : document 查询的开始条件
3. $max : document 查询的结束条件
4. $hint : document 指定服务器使用哪些索引进行查询
5. $explain : boolean 获取查询细节,如用到的索引,结果数量,耗时等,类似于关系数据库这边查看执行计划。并不会真正执行查询
6. $snapshot : boolean 确保查询的结果是在查询执行那一刻的一致快照!
。。。。。
有需要的,可以自己详细百度
mongodb的聚合
mongodb的聚合和mysql很类似,有:count,distinct,group,mapReduce等
1.count
2.distinct
3.group
参数解释:
key:分组的字段值
initial:每次分组调用一次,计数器的存在
$reduce:每次分组匹配到一条,计数器+1
group联合$where查询