在MongoDB集合中,我想对字段和一些聚合操作进行分组。
GroupOperation groupOperation= Aggregation.group("name").count().as("mygrop").sum("age").as("myage").avg("age").as("ageAVG");
如果我在写单行时没有中断返回确切结果的行,则在查询生成下方。
[
{
"$group": {
"_id": "$name",
"mygrop": {
"$sum": 1
},
"myage": {
"$sum": "$age"
},
"ageAVG": {
"$avg": "$age"
}
}
}
]
但是我想要传递字段并动态地聚合操作。
String countField = "mycount";
String sumField = "age";
String avgField = "age";
GroupOperation groupOperation = Aggregation.group(groupField);
if(null != countField){
groupOperation.count().as(countField);
}
if (null != sumField) {
groupOperation.sum(sumField).as("sum"+avgField);
}
if (null != avgField) {
groupOperation.avg(avgField).as("avg"+avgField);
}
它在下面的查询中生成。
[
{
"$group": {
"_id": "$name"
}
}
]
未添加countField
,sumField
和avgField
聚合操作。
countField
不为null,需要像下面的查询一样将count操作添加到其组中。
[
{
"$group": {
"_id": "$name",
"mygrop": {
"$sum": 1
}
}
}
]