У меня есть коллекция в Монго, которая имеет поле fromTime
, которое является эпохой (в секундах). Мне нужно создать запрос, который группирует данные по месяцам, и я использую Aggregate
в MongoTemplate
. Версия Mongo: 3.4.21
Мне удалось создать запрос, который выполняется на оболочке mongo:
db.myCollection.aggregate( [
{ "$match" : { "vehicleId" : { "$in" : [ 12026, 144836]} , "fromTime" : { $gt : 1567235400 , $lt: 1567621800}}} ,
{ "$group" : {_id: {$month: {$add: [new Date("1970-01-01"), {$multiply: ["$fromTime", 1000]}]}},"totalDistance" : { "$sum" : "$distance"}}} ,
{ "$project" : {"totalDistance" : { "$divide" : [ "$totalDistance" , 1000.0]} , "_id" : 0 , "fromTime" : "$_id"}}
])
Но, похоже, я не могу написать его в Java Spring Boot, используя MongoTemplate
,Я выяснил, что если я могу создать операцию проекции, которая преобразует эпоху в Date
, то получить из нее месяц, используя extractMonth и, наконец, сгруппировать по этому новому полю проекции, но нет функции для преобразования эпохи в дату в проекции. Операция