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