Pillola: Come utilizzare l'operatore $last in Mongodb

Pubblicato il 11/07/2022

Problema

Data una raccolta di dati di temperatura in MongoDB, come ottengo la temperatura media insieme all’ultima data di rilevazione ?

Soluzione

Per estrarre l’ultima data di rilevazione utilizzare l’operatore $last con l’accortezza di ordinare prima per data crescente.

// struttura dati

{
    "_id" : ObjectId("629758b1c87a18aebf01c831"),
    "date" : ISODate("2021-12-31T00:00:00.000Z"),
    "value" : 25.3,
    "type" : "Temperature"
}

// query

db.getCollection('sensors').aggregate([
    { 
        $sort : {"date" : 1} // <-- Necessario per uso corretto di $last
    },
    { 
        $group : {_id: "$type", avgTemp: {$avg: "$value"}, lastDate: {$last: "$date"}}
    }
])

// esempio risultato

{
    "_id" : "Temperature",
    "avgTemp" : 26.6,
    "lastDate" : ISODate("2022-03-13T00:00:00.000Z")
}

  • I contenuti di questo articolo sono rilasciati con licenza CC-BY 4.0
  • Eventuali spezzoni di codice presentati seguono, dove non dichiarato, licenza MIT