【问题标题】:How to run the following aggregation query using spring-data-mongo?如何使用 spring-data-mongo 运行以下聚合查询?
【发布时间】:2019-02-12 05:49:39
【问题描述】:
我想在 mongo 中使用投影来重塑文档。如何在 spring-data-mongo 中运行以下查询?
db.collection_name.aggregate([
{ $project : { date: { $toDate : {$multiply:['$timestamp',1000]} }, status:1} },
{ $group : { _id : { hour : { $hour: '$date' }} ,
count : { $sum: 1 } } }
])
结果应该有按小时分组的文档数。
【问题讨论】:
标签:
mongodb
spring-data
spring-data-mongodb
【解决方案1】:
这是一个使用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);