এজন্য aggregate() ব্যবহার করুন। ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
>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") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> 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 } ] }
কলেকশন থেকে সব নেস্টেড ফিল্ড রিট্রিভ করার কোয়েরি:
> db.demo138.aggregate([{ $unwind:"$PlayerDetails" }, { $project: { "PlayerName":"$PlayerDetails.PlayerName", "PlayerScore":"$PlayerDetails.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 }