สร้างคอลเลกชันตัวอย่าง
> db.demo138.insertOne({"Id":101,"PlayerDetails":[{"PlayerName":"Chris","PlayerScore":400},{"PlayerName":"David","PlayerScore":1000}]});
{ "acknowledged": true, "insertedId": ObjectId("5e31bb9ffdf09dd6d08539a1") }
> db.demo138.insertOne({"Id":102,"PlayerDetails":[{"PlayerName":"Bob","PlayerScore":500},{"PlayerName":"Carol","PlayerScore":600}]});
{ "acknowledged": true, "insertedId": ObjectId("5e31bbcefdf09dd6d08539a2") }
แสดงข้อมูล
> db.demo138.find();
{ "_id": ObjectId("5e31bb9ffdf09dd6d08539a1"), "Id": 101, "PlayerDetails": [ { "PlayerName": "Chris", "PlayerScore": 400 }, { "PlayerName": "David", "PlayerScore": 1000 } ] }
{ "_id": ObjectId("5e31bbcefdf09dd6d08539a2"), "Id": 102, "PlayerDetails": [ { "PlayerName": "Bob", "PlayerScore": 500 }, { "PlayerName": "Carol", "PlayerScore": 600 } ] }
คิวรี Aggregate: $unwind แล้ว $project ดึงฟิลด์เฉพาะ
> db.demo138.aggregate([
{ $unwind: "$PlayerDetails" },
{ $project: { "PlayerName": "$PlayerDetails.PlayerName", "PlayerScore": "$PlayerDetails.PlayerScore" } }
]);
ผลลัพธ์: แยกเป็น 4 เรคคอร์ด พร้อม PlayerName และ PlayerScore
{ "_id": ObjectId("5e31bb9ffdf09dd6d08539a1"), "PlayerName": "Chris", "PlayerScore": 400 }
{ "_id": ObjectId("5e31bb9ffdf09dd6d08539a1"), "PlayerName": "David", "PlayerScore": 1000 }
{ "_id": ObjectId("5e31bbcefdf09dd6d08539a2"), "PlayerName": "Bob", "PlayerScore": 500 }
{ "_id": ObjectId("5e31bbcefdf09dd6d08539a2"), "PlayerName": "Carol", "PlayerScore": 600 }