Dùng aggregate với $unwind và $project để "làm phẳng" (flatten) mảng object lồng nhau thành các document riêng biệt.
Tạo collection demo138:
> db.demo138.insertOne({
"Id":101,
"PlayerDetails": [
{"PlayerName":"Chris","PlayerScore":400},
{"PlayerName":"David","PlayerScore":1000}
]
});
> db.demo138.insertOne({
"Id":102,
"PlayerDetails": [
{"PlayerName":"Bob","PlayerScore":500},
{"PlayerName":"Carol","PlayerScore":600}
]
});
Pipeline: unwind PlayerDetails, project lấy các trường con:
> db.demo138.aggregate([
{ $unwind: "$PlayerDetails" },
{ $project: {
"PlayerName": "$PlayerDetails.PlayerName",
"PlayerScore": "$PlayerDetails.PlayerScore"
}}
]);
Kết quả 4 document riêng biệt (mỗi player một dòng):
{
"_id" : ObjectId("5e31bb9ffdf09dd6d08539a1"),
"PlayerName" : "Chris",
"PlayerScore" : 400
}
{
"_id" : ObjectId("5e31bb9ffdf09dd6d08539a1"),
"PlayerName" : "David",
"PlayerScore" : 1000
}
... (Bob, Carol)