Как выполнить следующий запрос агрегации, используя spring-data-mongo? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу изменить форму документа, используя проекцию в монго.Как выполнить следующий запрос в 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 голосов
/ 20 февраля 2019

Вот пример того, что вы можете сделать, используя 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);
...