Gunakan agregasi
ini artikel yang bagus untuk cara mengelompokkan dokumen Anda lalu pilih satu item per dokumen.
Anda juga perlu memfilter dokumen selama 24 jam terakhir, lalu memproyeksikan untuk menemukan dan hour
dari stempel waktu.
Permintaan Anda akan seperti ini
collection.aggregate([
{
"$filter": {
"createdAt": { $gt: new Date(Date.now() - 24*60*60 * 1000) }
}
},
{
"$project": {
"h": {"$hour" : "$createdAt"},
"original_doc": "$$ROOT"
}
},
{
"$group": {
"_id": { "hour": "$h" },
"docs": { $push: "$original_doc" }
}
},
{
$replaceRoot: {
newRoot: { $arrayElemAt: ["$docs", 0] }
}
}
])