單一目的聚集操作

聚集指的是,基於一個輸入和特定程序來計算結果的數據操縱操作的廣泛類別。

MongoDB提供了大量在結果集上執行特定聚集操作的聚集操作方法。

儘量在使用範圍上有限制,特別是和聚集管道、map-reduce相比較,但這些操作,爲常規的數據處理提供了直接的語義。

Count

MongoDB可以返回符合一個query的文檔數量。count命令,以及count()和cursor.count()方法提供訪問mongo shell裏面的計數(counts)。

例子:

假設一個名叫records的集合,僅有下面這些文檔:

{ a: 1, b: 0 }
{ a: 1, b: 1 }
{ a: 1, b: 4 }
{ a: 2, b: 2 }

下面的操作會計算在集合裏面的所有文檔的數目,並返回4

db.records.count()

下面的操作只會對a字段值爲1計數,返回結果爲3

db.records.count( { a: 1 } )

譯者注:

很多朋友可能對上面的shell腳本轉化成實際編程語言感動困難。實際上,mongoDB提供的API都很友好,和上面的shell基本有對應關係。以Java爲例,

// db是取得的數據庫
DBCollection collection = db.getCollection("record");
BasicDBObject query = new BasicDBObject();
query.put("a",1);
int result = collection.count(query);

再舉個例子,筆者最近做的一個項目,有這個一個需求:統計當天新註冊用戶量。

query.put("registertime",new BasicDBObject("$gt",HeartDateUtil.getStartDateOfToday()));
collection.count(query);
其中HeartDateUtil.getStartDateOfToDay是一個工具方法,用來返回今天開始的Date.


Distinct


Distinct操作匹配查詢的文檔,返回在匹配文檔裏該字段的所有唯一值。在Mongo shell裏面提供了distinct命令和db.collection.distinct()方法。考慮下面的操作:



發佈了26 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章