Запросить все документы, созданные за последние 24 часа, и сгруппировать по часам? - PullRequest
0 голосов
/ 26 апреля 2018

Читая различные статьи, я считаю, что это возможно, но я не уверен, с чего именно начать.

Вот что я пытаюсь сделать:

Я хочу выполнить запрос, где он находит все документы, созданные за последние 24 часа, и группирует их все по часам, и поскольку каждый часовой документ имеет значение AVG "PM10" и значение MAX_PM10 за последние 24 часа, последние 24 часа AVG_PM10_value.Я хочу выполнить запрос Iam, получая каждый час значение AVG_PM10, напоминая, как рассчитать значение каждого часа avg_PM10 и значение total_PM10_avg, значение toatal_PM10_max, пожалуйста, укажите мне

Here's a sample of the collection:

    {
        "_id" : ObjectId("5ad768309ee4f03480792b20"),
        "CREATEDATE" : ISODate("2018-04-25T15:45:52.779Z"),
        "PM10" : 176.024749755859,
        "PM2DOT5" : 60.0020217895508,
    }
 {
        "_id" : ObjectId("5ad768309ee4f03480792b30"),
        "CREATEDATE" : ISODate("2018-04-25T16:45:52.779Z"),
        "PM10" : 176.024749755859,
        "PM2DOT5" : 60.0020217895508,
    }

And the aggregation query:

    db.collection1.aggregate(
     {$match: {
       CREATEDATE: {$gt: new Date(new Date(ISODate().getTime() - 1000*60*60*24))}
     }},
     {$project: {  "h":{"$hour":"$CREATEDATE"}, "PM10":1 }},
     {$group:{ 
       "_id":"$h",
       "Max_PM10": {"$max":"$PM10"},
       "PM10": {$avg:"$PM10"} 
     }}
   ])
Expected output:

    {
        "Hour":15,
        "AVG_PM10_VALUE":154.64,

    }
   {
        "Hour":16,
        "AVG_PM10_VALUE":157.64,

    }


  "TOTAL_PM10_MAX_VALUE":157.89,
  "TOTAL_PM10_AVG_VALUE":156.14
...