我有以下在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()具有该方法版本。
提交了一张罚单,问题就解决了!
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 解决: 或进一步复杂的一个班轮分组,总和为: