[英]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.