MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aggregation auf Monats- und Jahresebene, finden Sie auch den Durchschnitt in MongoDB

  • $objectToArray data umwandeln Objekt in das Schlüsselwertformat des Arrays
  • $filter um die Schleife des oben konvertierten Arrays zu durchlaufen
  • überprüfen Sie $and Bedingungen
  • $toDate um data zu erhalten ab Stringdatum
  • $month um Monat aus Datum und $year auszuwählen Jahr auswählen
  • $in Überprüfen Sie die Bedingung, wenn der Monat in einem Array von Monaten und das Jahr in einem Array von Jahren liegt
  • $arrayToObject zurück in Objekt aus Schlüsselwert-Array umwandeln
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] }
              ]
            }
          }
        }
      }
    }
  }
])

Spielplatz