Search This Blog

Friday, July 5, 2019

MongoDB - Pipelines

[
  {
    '$addFields': {
      'Month': {
        '$month': {
          '$dateFromString': {
            'dateString': '$job.ActionDateTime',
            'format': '%d/%m/%Y %H.%M.%S'
          }
        }
      },
      'Year': {
        '$year': {
          '$dateFromString': {
            'dateString': '$job.ActionDateTime',
            'format': '%d/%m/%Y %H.%M.%S'
          }
        }
      },
      'MonthYear': {
        '$dateToString': {
          'format': '%m:%Y',
          'date': {
            '$dateFromString': {
              'dateString': '$job.ActionDateTime',
              'format': '%d/%m/%Y %H.%M.%S'
            }
          }
        }
      }
    }
  }, {
    '$facet': {
      'Totals': [
        {
          '$group': {
            '_id': null,
            'averageRain': {
              '$sum': 1
            },
            'maxRain': {
              '$max': '$Rainfall'
            },
            'totalRain': {
              '$sum': '$Rainfall'
            }
          }
        }
      ],
      'Monthly': [
        {
          '$group': {
            '_id': '$Month',
            'averageRain': {
              '$sum': 1
            },
            'Rainfall': {
              '$sum': '$Rainfall'
            },
            'maxRain': {
              '$max': '$Rainfall'
            }
          }
        }, {
          '$sort': {
            '_id': 1
          }
        }
      ]
    }
  }
]