当前位置: 首页 > 知识库问答 >
问题:

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

李光华
2023-03-14

我有以下在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

更新:这里似乎忘记了该方法的sum(AggregationExpression-expr)版本。min()、max()、first()具有该方法版本。

共有1个答案

燕鸿文
2023-03-14

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

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

 类似资料:
  • 我需要开发一个web服务,这将帮助客户机做一些周期性的工作,api将喜欢这个void Dojob(int jobType,string cronExpression);

  • 如何在不包含连续子字符串baa的字母表{a,b,c}上表达正则表达式?

  • 问题内容: 以下代码的输出是什么: 我知道这是pre- increment运算符,在表达式中使用之前,的值会增加,而在表达式执行后会增加其值。我想知道的是- 这种逻辑在这里如何应用? 问题答案: 更容易看到x = 1而不是2的情况。输出为7。 理解这一点的关键是在JLS 15.7.2中,该状态指出在执行操作的任何部分之前,将对每个操作数进行全面评估。 Java编程语言保证,在执行操作本身的任何部分

  • 复杂的表达式 当你有一个复杂的 if 子句的时候,你应该把它们提取出来赋给一个 BOOL 变量,这样可以让逻辑更清楚,而且让每个子句的意义体现出来。 BOOL nameContainsSwift = [sessionName containsString:@"Swift"]; BOOL isCurrentYear = [sessionDateCompontents year] == 2

  • 我有两个实体:类别和具有一对多关系的产品。 如果价格大于100,我如何按产品数量订购类别?类似(这不起作用):

  • 问题内容: 我有一个对象列表。首先,我需要按类型对其进行排序。比按faceValue。最后,总结所有数量: 结果列表必须仅包含3个新硬币对象: 怎么只用一个lambda表达式写出来呢? 问题答案: 您可以使用as 解决: 或进一步复杂的一个班轮分组,总和为: