ใช้ Aggregate Pipeline: $unwind, $sort, $limit
เพื่อหาอิลิเมนต์ล่าสุด (ค่า Id สูงสุด) ในอาร์เรย์ข้ามทุกเอกสาร ให้แยกอาร์เรย์ เรียงลำดับ จำกัดจำนวน แล้วจัดกลุ่ม
> db.demo179.insertOne({ "Name": "Chris", "Details": [ { "Id": 101, "Subject": "MongoDB" }, { "Id": 102, "Subject": "MySQL" } ] });
คำสั่ง aggregate หา 2 รายการล่าสุด:
db.demo179.aggregate([
{ "$unwind": "$Details" },
{ "$sort": { "Details.Id": -1 } },
{ "$limit": 2 },
{ "$group": { "_id": "$Details.Id", "Name": { "$first": "$Name" }, "Details": { "$push": "$Details" } } },
{ "$project": { "_id": 0, "Name": 1, "Details": 1 } }
])
ผลลัพธ์แสดงรายการ Id 104 และ 103 (ค่าสูงสุด)