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

กำหนดรูปแบบผลลัพธ์ใน MongoDB ให้คืนค่าเป็นอาร์เรย์

ใช้ Aggregation Framework พร้อม $group และ $addToSet เพื่อรวมค่าจากหลายเอกสารเป็นอาร์เรย์เดียว เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:

> db.specifyReturnFormatDemo.insertOne({"Subject":"MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd364ef71edecf6a1f6c0") }
> db.specifyReturnFormatDemo.insertOne({"Subject":"MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd369ef71edecf6a1f6c1") }
> db.specifyReturnFormatDemo.insertOne({"Subject":"SQL Server"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cefd36fef71edecf6a1f6c2") }

แสดงเอกสารทั้งหมด:

> db.specifyReturnFormatDemo.find();

คิวรี่ Aggregate รวม Subject ทั้งหมดเป็นอาร์เรย์ (ใช้ $addToSet เพื่อไม่ให้ซ้ำ):

> db.specifyReturnFormatDemo.aggregate([
  { "$group": { "_id": 0, "Subject": { "$addToSet": "$Subject" } } },
  { "$project": { "_id": 0, "Subject": 1 } }
]);

คำอธิบาย:

  • $group พร้อม _id: 0 - จัดกลุ่มทุกเอกสารเป็นกลุ่มเดียว
  • $addToSet - เพิ่มค่าในอาร์เรย์ โดยไม่ให้ซ้ำ (ต่างจาก $push ที่อาจมีค่าซ้ำ)
  • $project - จัดรูปแบบผลลัพธ์ ให้แสดงเฉพาะ Subject