সাব-ডকুমেন্ট ম্যাচ অনুসারে সাজানোর জন্য, আপনি সামগ্রিক কাঠামো ব্যবহার করতে পারেন। আসুন প্রথমে নথি-
সহ একটি সংগ্রহ তৈরি করি> db.sortBySubDocumentsDemo.insertOne( { "StudentName": "Chris", "StudentDetails": [ { "Age":21, "StudentScore":91 }, { "Age":22, "StudentScore":99 }, { "Age":21, "StudentScore":93 } ] } ); { "acknowledged" : true, "insertedId" : ObjectId("5cd57e297924bb85b3f48942") } > db.sortBySubDocumentsDemo.insertOne( { "StudentName": "Robert", "StudentDetails": [ { "Age":24, "StudentScore":78 }, { "Age":21, "StudentScore":86 }, { "Age":23, "StudentScore":45 } ] } ); { "acknowledged" : true, "insertedId" : ObjectId("5cd57e4c7924bb85b3f48943") }
Find() পদ্ধতির সাহায্যে একটি সংগ্রহ থেকে সমস্ত নথি প্রদর্শন করার জন্য নিম্নলিখিত প্রশ্ন রয়েছে -
> db.sortBySubDocumentsDemo.find().pretty();
এটি নিম্নলিখিত আউটপুট −
তৈরি করবে{ "_id" : ObjectId("5cd57e297924bb85b3f48942"), "StudentName" : "Chris", "StudentDetails" : [ { "Age" : 21, "StudentScore" : 91 }, { "Age" : 22, "StudentScore" : 99 }, { "Age" : 21, "StudentScore" : 93 } ] } { "_id" : ObjectId("5cd57e4c7924bb85b3f48943"), "StudentName" : "Robert", "StudentDetails" : [ { "Age" : 24, "StudentScore" : 78 }, { "Age" : 21, "StudentScore" : 86 }, { "Age" : 23, "StudentScore" : 45 } ] }
সাবডকুমেন্ট ম্যাচ অনুসারে বাছাই করার জন্য নিম্নলিখিত প্রশ্নটি রয়েছে। এখানে, আমরা স্টুডেন্টস্কোর −
অনুসারে বাছাই করছি> db.sortBySubDocumentsDemo.aggregate([ {$match: { 'StudentDetails.Age': 21 }}, {$unwind: '$StudentDetails'}, {$match: {'StudentDetails.Age': 21}}, {$project: {_id: 0, "StudentName": 1, 'StudentDetails.StudentScore': 1}}, {$sort: { 'StudentDetails.StudentScore': 1 }}, {$limit: 5} ]);
এটি নিম্নলিখিত আউটপুট −
তৈরি করবে{ "StudentName" : "Robert", "StudentDetails" : { "StudentScore" : 86 } } { "StudentName" : "Chris", "StudentDetails" : { "StudentScore" : 91 } } { "StudentName" : "Chris", "StudentDetails" : { "StudentScore" : 93 } }