我想使用mongo中的投影来重塑文档。如何在spring-data-mongo中运行以下查询?
db.collection_name.aggregate([
{ $project : { date: { $toDate : {$multiply:['$timestamp',1000]} }, status:1} },
{ $group : { _id : { hour : { $hour: '$date' }} ,
count : { $sum: 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);