MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Agrégation au niveau du mois et au niveau de l'année, trouvez également la moyenne dans MongoDB

  • $objectToArray convertir data objet au format clé-valeur du tableau
  • $filter pour itérer la boucle du tableau converti ci-dessus
  • vérifier $and conditions
  • $toDate pour obtenir des data à partir de la date de la chaîne
  • $month pour sélectionner le mois à partir de la date et $year pour sélectionner l'année
  • $in vérifier l'état si le mois est dans un tableau de mois et l'année dans un tableau d'années
  • $arrayToObject reconvertir en objet à partir du tableau clé-valeur
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] }
              ]
            }
          }
        }
      }
    }
  }
])

Aire de jeux