簡體   English   中英

Mongodb Java驅動程序版本3+中的聚合

[英]Aggregation in Mongodb Java Driver version 3+

我在使聚合在Mongodb Java驅動程序版本3+中工作時遇到一些問題

我需要在同一查詢中獲取最大值,最小值和平均值。

db.sensordata.aggregate(
{
$match : {"port":"GOOD_PRODUCT_COUNT", 
          "serial":"MDC-SBO", 
          "collected":{"$gte": new Date("2017-09-12T00:00:00.000Z")}, 
          "x":"y"

}
},
{
"$group": {
        "_id": 0,
        "average": {
            "$avg": "$value"
        },
        "sum": {
             $sum:"$value"
        },  
        "max": {
            "$max": "$value"
        }
        ,  
        "min": {
            "$min": "$value"
        },
        "count": {
                $sum: 1
        }

    }
}
);

如何用Java做到這一點?

非常感謝。

您可以嘗試下面的聚合查詢。

import static com.mongodb.client.model.Accumulators.*;
import static com.mongodb.client.model.Aggregates.*;
import static com.mongodb.client.model.Filters.*;
import static java.util.Arrays.asList;
List<Document> results = mongoCollection.aggregate(
   asList(
      match(
            and(
                  eq("port", "GOOD_PRODUCT_COUNT"),
                  eq("serial", "MDC-SBO"),
                  eq("x", "y"),
                  gte("collected", new Date())
              )      
           ),
      group(
           "_id:0",
           avg("average", "$value"),
           sum("sum", "$value"),
           max("max", "$value"),
           min("min", "$value"),
           sum("count", 1)             
      )           
   )            
).into(new ArrayList<>());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM