具有条件的多个聚合操作的Spring MongoDB组

时间:2020-03-27 10:55:02

标签: java spring-boot aggregation-framework spring-data-mongodb

在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"
    }
  }
]

未添加countFieldsumFieldavgField聚合操作。 countField不为null,需要像下面的查询一样将count操作添加到其组中。

[
  {
    "$group": {
      "_id": "$name",
      "mygrop": {
        "$sum": 1
      }
    }
  }
]

0 个答案:

没有答案