使用 Spring MongoDB 创建聚合查询 |将小时添加到投影中的日期

Create Aggregation query using Spring MongoDB | Add hours into Date in Projection

我想在我的 spring 启动应用程序中创建聚合查询。

查询:

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 引导应用程序中创建了以下聚合对象

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")
                );