@ bin-chen,
Bạn có thể sử dụng tổng hợp cho n mục mới nhất của một tập hợp con các tài liệu trong bộ sưu tập. Đây là một ví dụ đơn giản mà không cần nhóm (mà bạn sẽ thực hiện giữa giai đoạn 4 và 5 trong trường hợp này).
Điều này trả về 20 mục mới nhất (dựa trên một trường gọi là "dấu thời gian"), được sắp xếp tăng dần. Sau đó, nó chiếu từng tài liệu _id, dấu thời gian và bất cứ điều gì_field_you_want_to_show vào kết quả.
var pipeline = [
{
"$match": { //stage 1: filter out a subset
"first_field": "needs to have this value",
"second_field": "needs to be this"
}
},
{
"$sort": { //stage 2: sort the remainder last-first
"timestamp": -1
}
},
{
"$limit": 20 //stage 3: keep only 20 of the descending order subset
},
{
"$sort": {
"rt": 1 //stage 4: sort back to ascending order
}
},
{
"$project": { //stage 5: add any fields you want to show in your results
"_id": 1,
"timestamp" : 1,
"whatever_field_you_want_to_show": 1
}
}
]
yourcollection.aggregate(pipeline, function resultCallBack(err, result) {
// account for (err)
// do something with (result)
}
vì vậy, kết quả sẽ trông giống như:
{
"_id" : ObjectId("5ac5b878a1deg18asdafb060"),
"timestamp" : "2018-04-05T05:47:37.045Z",
"whatever_field_you_want_to_show" : -3.46000003814697
}
{
"_id" : ObjectId("5ac5b878a1de1adsweafb05f"),
"timestamp" : "2018-04-05T05:47:38.187Z",
"whatever_field_you_want_to_show" : -4.13000011444092
}
Hi vọng điêu nay co ich.