如何在Spring Data MongoDB中表达复杂的$ sum分组表达式

时间:2017-09-18 02:49:03

标签: spring-data spring-data-mongodb

我有跟随在MongoDB中运行良好的MongoDB聚合查询

   [
     { $match: { "myfield":"X" },
     { $group: {
           _id: { myfield: "$myfield"  },
           count: { $sum: 1 },
           lt5w: { $sum: { $cond:{ if: { $gte: [ "$myDate", new Date(ISODate().getTime() - 1000 * 60 * 60 * 24 * 7 * 5) ] }, then: 1, else: 0 } } },
           gt12w: { $sum: { $cond:{ if: { $gte: [ new Date(ISODate().getTime() - 1000 * 60 * 60 * 24 * 7 * 12), "$myDate"  ] }, then: 1, else: 0 } } }
         }
     }
])

如何使用Spring Data MongoDB API表达这个复杂的$ sum操作?

group("myfield))
    .sum("???").as("lt5w")
    .sum("???").as("gt12w")
    .count().as("count"),

sum()方法只需要简单的字符串。 根据这张票(已关闭) https://jira.spring.io/browse/DATAMONGO-784 聚合应支持复杂的操作,如$ cmp和$ cond

更新:似乎忘记了here方法的总和(AggregationExpression expr)版本。 min(),max(),first()具有该方法版本。

1 个答案:

答案 0 :(得分:1)

提交了一张罚单并解决了问题!

https://jira.spring.io/browse/DATAMONGO-1784