sql >> Base de Datos >  >> NoSQL >> MongoDB

Agregación a nivel de mes y nivel de año, también encuentre el promedio en MongoDB

  • $objectToArray convertir data formato de valor-clave de objeto a matriz
  • $filter para iterar el bucle de la matriz convertida anterior
  • marque $and condiciones
  • $toDate para obtener data desde la fecha de la cadena
  • $month para seleccionar el mes a partir de la fecha y $year para seleccionar el año
  • $in verifique la condición si el mes está en una serie de meses y el año está en una serie de años
  • $arrayToObject volver a convertir a objeto desde una matriz de clave-valor
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] }
              ]
            }
          }
        }
      }
    }
  }
])

Patio de juegos