Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การค้นหาอิลิเมนต์ล่าสุดในอาร์เรย์ข้ามทุกเอกสาร MongoDB

ใช้ 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 (ค่าสูงสุด)