聚合操作 - 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),所以就必須允許對結果集進行精簡處理。
新聞熱點
疑難解答