mongodb - 使用 Spring MongoDB 创建聚合查询 | 将小时数添加到投影中的日期
问题描述
我想在我的 Spring Boot 应用程序中创建一个聚合查询。
询问:
db.mycollection.aggregate(
{
$match : {
timeStamp: {$gte: ISODate("2020-07-13T00:00:00.000Z"), $lt: ISODate("2020-07-13T23:59:59.000Z")}
}
},
{ "$project": {
"h":{"$hour": { "$add": [ "$timeStamp", 5.5 * 60 * 60 * 1000 ] }}
}},
{ "$group":{
"_id": "$h",
"total":{ "$sum": 1}
}
}
)
我在我的 Spring Boot 应用程序中创建了以下 Aggregation 对象
Aggregation violationHourlyData = Aggregation.newAggregation(
Aggregation.match(Criteria.where("timeStamp").gte(fromDate).lte(toDate)),
Aggregation.project("_id").andExpression( "hour(timeStamp)").as("h"),
Aggregation.group("h").count().as("count")
);
在上面的对象中,我想在查询中提到的 timeStamp 中添加一些时间。
谢谢
解决方案
通过详细理解andExpression()找到了答案。
回答:
Aggregation violationHourlyData = Aggregation.newAggregation(
Aggregation.match(Criteria.where("timeStamp").gte(fromDate).lte(toDate)),
Aggregation.project("_id").andExpression( "hour(add(timeStamp, 5.5 * 60 * 60 * 1000))").as("h"),
Aggregation.group("h").count().as("count")
);
推荐阅读
- flutter - 错误:无法将参数类型“PointerEvent”分配给参数类型“PointerDownEvent”
- java - 使用 Optional 而不是嵌套 if else 的 Lambda 函数
- javascript - 如何使用回车键点击字体真棒(喜欢/不喜欢)图标?
- sql - 可选择运行派生表。使用“where 子句”或“连接条件”更快地排除数据
- python - Kivy,鼠标周围不透明,显示图片
- python - Microsoft-Graph:无法从 python 代码获取令牌:错误 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]
- python - 根据特定列的相等文本加入数据库
- django - 我想在 django rest 框架上设置一个 API,就像它一样 https://docs.microsoft.com/en-us/rest/api/power-bi/reports/get-reports-in-group#code-try-0
- javascript - 如何通过dataTable中的复选框或单选按钮选择记录
- c# - 为什么 Content-Disposition UTF8 格式在一种情况下有效但在另一种情况下失败