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

รวมเอกสารในอาร์เรย์ด้วย Aggregate ใน MongoDB

ใช้ 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