MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregação em nível de mês e nível de ano, também encontre a média no MongoDB

  • $objectToArray converter data objeto para formato de valor-chave de matriz
  • $filter para iterar o loop do array convertido acima
  • verifique $and condições
  • $toDate para obter data da data da string
  • $month para selecionar o mês a partir da data e $year para selecionar o ano
  • $in verifique a condição se o mês estiver em uma matriz de meses e o ano estiver em uma matriz de anos
  • $arrayToObject converter de volta para objeto da matriz de valor-chave
var years = [2021];
var months = [5];
db.collection.aggregate([
  {
    $project: {
      data: {
        $arrayToObject: {
          $filter: {
            input: { $objectToArray: "$data" },
            cond: {
              $and: [
                { $in: [{ $year: { $toDate: "$$this.k" } }, years] },
                { $in: [{ $month: { $toDate: "$$this.k" } }, months] }
              ]
            }
          }
        }
      }
    }
  }
])

Playground