MongoDB學習記錄04-MongoDB聚合操作


說明

MongoDB中聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算后的數據結果

MongoDB的聚合管道將MongoDB文檔在一個管道處理完畢后將結果傳遞給下一個管道處理。

Aggregate

示例

    @Test
public void testAggregate1(){
coll.aggregate(Arrays.asList(
Aggregates.match(Filters.eq("sex", 1)),//查詢所有sex=1的數據
Aggregates.group("$age", Accumulators.sum("total", 1)),//根據age分組 , 設置求和的字段名為total
Aggregates.sort(new Document().append("total", 1))//根據total進行排序 1 升 , -1降
)).forEach(new Block<Document>() {//通過foreach打印
@Override
public void apply(Document document) {
System.out.println(document.toJson());
}
});
}

聚合表達式

$sum   計算總和。   
$avg 計算平均值
$min 獲取集合中所有文檔對應值得最小值。
$max 獲取集合中所有文檔對應值得最大值。
$push 在結果文檔中插入值到一個數組中。
$addToSet 在結果文檔中插入值到一個數組中,但不創建副本。
$first 根據資源文檔的排序獲取第一個文檔數據。
$last 根據資源文檔的排序獲取最后一個文檔數據

更多

官網有很多詳細

http://mongodb.github.io/mongo-java-driver/3.4/javadoc/?com/mongodb/client/model/Accumulators.html

聚合管道

MongoDB的聚合管道將MongoDB文檔在一個管道處理完畢后將結果傳遞給下一個管道處理。

聚合框架中常用的幾個操作:

$project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用於創建計算結果以及嵌套文檔。
$match:用於過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標准查詢操作。
$limit:用來限制MongoDB聚合管道返回的文檔數。
$skip:在聚合管道中跳過指定數量的文檔,並返回余下的文檔。
$unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。
$group:將集合中的文檔分組,可用於統計結果。
$sort:將輸入文檔排序后輸出。
$geoNear:輸出接近某一地理位置的有序文檔。
    @Test
public void testAggregate2(){
coll.aggregate(Arrays.asList(
Aggregates.match(Filters.eq("sex", 1)),//查詢所有sex=1的數據
Aggregates.project(new Document("age",1))//0不顯示age ,1 只顯示age 0等價於false 1 等價於true
)).forEach(new Block<Document>() {//通過foreach打印
@Override
public void apply(Document document) {
System.out.println(document.toJson());
}
});
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com