sql >> Databasteknik >  >> NoSQL >> MongoDB

Aggregering på månadsnivå och årsnivå, hitta även genomsnittet i MongoDB

  • $objectToArray konvertera data objekt till array nyckel-värde format
  • $filter för att iterera loop av ovan konverterade array
  • kontrollera $and villkor
  • $toDate för att få data från strängdatum
  • $month för att välja månad från datum och $year för att välja år
  • $in kontrollera i skick om månaden är i en mångfald av månader och året är i en mängd år
  • $arrayToObject konvertera tillbaka till objekt från nyckel-värde 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] }
              ]
            }
          }
        }
      }
    }
  }
])

Lekplats




  1. Hur väntar man på att posten på mongoose list ska skjutas?

  2. Vill inte behöva börja mongod med `sudo mongod`

  3. Profilering av MongoDB-databasen för att se de utförda frågorna

  4. Rita namn på stater på kartan med Node js och D3 i realtid