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

MongoDB Aggregate: ดึงฟิลด์แบบฝังทั้งหมดด้วย $unwind + $project


สร้างคอลเลกชันตัวอย่าง

> 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 }