sql >> Database teknologi >  >> NoSQL >> MongoDB

Aggregering på månedsniveau og årsniveau, find også gennemsnittet i MongoDB

  • $objectToArray konvertere data objekt til matrix-nøgleværdi-format
  • $filter at iterere loop af ovenstående konverterede matrix
  • tjek $and betingelser
  • $toDate for at få data fra strengdato
  • $month for at vælge måned fra dato og $year for at vælge år
  • $in tjek i tilstanden, hvis måneden er i en række måneder, og året er i en række år
  • $arrayToObject konverter tilbage til objekt fra nøgleværdi-array
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] }
              ]
            }
          }
        }
      }
    }
  }
])

Legeplads




  1. Klassekonstruktør MongoStore kan ikke påberåbes uden 'ny' (Express-NodeJs) Backend

  2. find i MongoCollection<Dokument>

  3. Tjek om der er en fejl i update/insert | MongoDB Java driver

  4. Kalder mongoose fra reagere klient side