如何使用spring-data-mongo运行以下聚合查询?

时间:2019-02-12 05:49:39

标签: mongodb spring-data spring-data-mongodb

我想使用mongo中的投影来重塑文档。如何在spring-data-mongo中运行以下查询?

db.collection_name.aggregate([
  { $project : { date: { $toDate : {$multiply:['$timestamp',1000]} }, status:1} },
  { $group : { _id : { hour : { $hour: '$date' }} ,
        count : { $sum: 1 } } }
])

结果应按小时将文档计数分组。

1 个答案:

答案 0 :(得分:0)

以下是使用mongoTemplate可以执行的操作的示例。我还没有测试过。

Document multiplyTime = new Document("$multiply", Arrays.asList("$timestamp", 1000));
ProjectionOperation project1 = project("status").and(ConvertOperators.ToDate.toDate(multiplyTime)).as("date");
ProjectionOperation project2 = project().and(DateOperators.Hour.hour("date")).as("hour");
GroupOperation group = group("hour").count().as("count");
mongoTemplate.aggregate(Aggregation.newAggregation(project1, project2, group),"yourCOllection", Document.class);