Pillola: Come utilizzare l'operatore $last in Mongodb
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")
}