ใช้ Aggregate Framework พร้อม $unwind, $min, $max เพื่อรวมคำนวณค่าสถิติจากอาร์เรย์ของซับดอกิวเมนต์ เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> db.aggregateArrayDemo.insertOne(
{
"_id":100,
"UserDetails": [
{ "UserName": "John", "UserLoginYear":2010 },
{ "UserName": "Carol", "UserLoginYear":2019 }
]
}
);
{ "acknowledged" : true, "insertedId" : 100 }
แสดงเอกสาร:
> db.aggregateArrayDemo.find().pretty();
คิวรี่ Aggregate หาปีเข้าสู่ระบบต่ำสุดและสูงสุดจากอาร์เรย์ UserDetails:
> db.aggregateArrayDemo.aggregate([ { $match: { _id: 100 } }, { $project: { Minimum: { $min: "$UserDetails.UserLoginYear" }, Maximum: { $max: "$UserDetails.UserLoginYear" } }} ]);คำอธิบาย:
$match- กรองเอกสาร _id = 100 ก่อน$projectพร้อม$minและ$max- คำนวณค่าต่ำสุด/สูงสุดจากฟิลด์ UserLoginYear ในทุกออบเจกต์ของอาร์เรย์ UserDetails- MongoDB เข้าถึง
$UserDetails.UserLoginYearเป็นอาร์เรย์ของค่า [2010, 2019] อัตโนมัติ
ตัวดำเนินการอาร์เรย์อื่นๆ: $avg, $sum, $stdDevPop, $stdDevSamp