聚合操作 - COUNT
// count 操作
db . collection . count ({
'status ' : 1
}
提示:创建索引会大大提升count的性能。
聚合操作 - DISTINCT
distinct是用来找出给定条件的所有不同的值的。
// distinct
db . address . distinct (
" zip - code " ,
{
age : 30
}
);
聚合操作 - GROUP
group是较为复杂的聚合操作,它与关系型数据库中的GROUP BY类似,但更加强大。group先选定分组依据的键,然后将集合根据键值的不同分成若干组。之后再聚合每一组内的文档产生查询结果。
-- sql 伪代码
SELECT a , b , SUM ( c ), CSUM
FROM COLL
WHERE active = 1
GROUP BY a , b
// MongoDB
db . coll . group ({
'key ' : {
'a ' : true ,
'b ' : true
},
'cond ' : { ' active' : 1 },
'reduce ' : f unction ( obj , prev ) {
prev . csum += obj . c ;
},
'initial ' : { 'csum' : 0 }
});
参数说明:
key:分组依据;
cond:查询条件;
reduce:聚合操作;
initial:指定聚合计数器的初始对象;
GROUP完成器
完成器可以用来精简结果集。也就是对结果集进行进一步的处理。
之所以会提供这个方法,是因为MongoDB的group操作有个特殊要求,即:返回结果必须能够完全包含在1个文档之内(之前是4M,现在是16M),所以就必须允许对结果集进行精简处理。
新闻热点
疑难解答