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

Aggregazione a livello di mese e livello di anno, trova anche la media in MongoDB

  • $objectToArray converti data oggetto in formato chiave-valore array
  • $filter per iterare il ciclo dell'array convertito sopra
  • controlla $and condizioni
  • $toDate per ottenere data dalla stringa data
  • $month per selezionare il mese dalla data e $year per selezionare l'anno
  • $in controlla in condizione se il mese è in una serie di mesi e l'anno è in una serie di anni
  • $arrayToObject riconvertire in oggetto dall'array chiave-valore
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] }
              ]
            }
          }
        }
      }
    }
  }
])

Parco giochi