聚合操作 - COUNT
// count 操作
db . collection . count ({
'status ' : 1
}
提示:創(chuàng)建索引會大大提升count的性能。
聚合操作 - DISTINCT
distinct是用來找出給定條件的所有不同的值的。
// distinct
db . address . distinct (
" zip - code " ,
{
age : 30
}
);
聚合操作 - GROUP
group是較為復(fù)雜的聚合操作,它與關(guān)系型數(shù)據(jù)庫中的GROUP BY類似,但更加強大。group先選定分組依據(jù)的鍵,然后將集合根據(jù)鍵值的不同分成若干組。之后再聚合每一組內(nèi)的文檔產(chǎn)生查詢結(jié)果。
-- 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 }
});
參數(shù)說明:
key:分組依據(jù);
cond:查詢條件;
reduce:聚合操作;
initial:指定聚合計數(shù)器的初始對象;
GROUP完成器
完成器可以用來精簡結(jié)果集。也就是對結(jié)果集進(jìn)行進(jìn)一步的處理。
之所以會提供這個方法,是因為MongoDB的group操作有個特殊要求,即:返回結(jié)果必須能夠完全包含在1個文檔之內(nèi)(之前是4M,現(xiàn)在是16M),所以就必須允許對結(jié)果集進(jìn)行精簡處理。
新聞熱點
疑難解答