sql >> Database >  >> NoSQL >> MongoDB

Aggregatie op maandniveau en jaarniveau, vind ook het gemiddelde in MongoDB

  • $objectToArray converteer data object naar array sleutel-waarde formaat
  • $filter om de lus van de bovenstaande geconverteerde array te herhalen
  • vink $and aan voorwaarden
  • $toDate om data te krijgen vanaf tekenreeksdatum
  • $month om de maand te selecteren vanaf de datum en $year jaar selecteren
  • $in check-in staat als de maand in een reeks van maanden staat en het jaar in een reeks van jaren
  • $arrayToObject converteer terug naar object van sleutel-waarde-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] }
              ]
            }
          }
        }
      }
    }
  }
])

Speeltuin




  1. Hoe een overeenkomstvoorwaarde voor matrixwaarden te schrijven?

  2. Redis en Memcache of alleen Redis?

  3. Kan niet scannen met redis-sjabloon

  4. Voer redis uit in marathon (mesos) onder één url