Sử dụng tổng hợp
đây là một bài viết tuyệt vời để biết cách nhóm các tài liệu của bạn, sau đó chọn một mục trên mỗi tài liệu.
Bạn cũng cần lọc tài liệu trong 24 giờ qua, sau đó chiếu để tìm và hour
từ dấu thời gian.
Truy vấn của bạn sẽ giống như thế này
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] }
}
}
])