ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> db.demo136.insertOne(
{
"Name":"Chris",
"Details":[
{
"Id":"101",
"EmployeeName":"Mike",
"EmployeeDetails":[
{ "EmpId":1001, "Salary":1000 },
{ "EmpId":1002, "Salary":2000 }
]
},
{
"Id":"102",
"EmployeeName":"David",
"EmployeeDetails":[
{ "EmpId":1004, "Salary":4000 },
{ "EmpId":1005, "Salary":5000 }
]
}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e31b15cfdf09dd6d085399f") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> db.demo136.find();
আউটপুট:
{ "_id" : ObjectId("5e31b15cfdf09dd6d085399f"), "Name" : "Chris", "Details" : [ { "Id" : "101", "EmployeeName" : "Mike", "EmployeeDetails" : [ { "EmpId" : 1001, "Salary" : 1000 }, { "EmpId" : 1002, "Salary" : 2000 } ] }, { "Id" : "102", "EmployeeName" : "David", "EmployeeDetails" : [ { "EmpId" : 1004, "Salary" : 4000 }, { "EmpId" : 1005, "Salary" : 5000 } ] } ] }
সাব-ডকুমেন্ট সর্ট করার কোয়েরি (টোটাল স্যালারি অনুযায়ী ডিসেন্ডিং):
> db.demo136.aggregate([
{ $unwind: "$Details" },
{
$project: {
Name: 1,
Details: 1,
SalaryTotal: { $sum: "$Details.EmployeeDetails.Salary" }
}
},
{ $sort: { SalaryTotal: -1 } },
{
$group: {
_id: "$_id",
Name: { $first: "$Name" },
Details: { $push: "$Details" }
}
}
]).pretty()
ফলাফল (Details অ্যারে টোটাল স্যালারি অনুযায়ী সর্ট হয়েছে):
{ "_id" : ObjectId("5e31b15cfdf09dd6d085399f"), "Name" : "Chris", "Details" : [ { "Id" : "102", "EmployeeName" : "David", "EmployeeDetails" : [ { "EmpId" : 1004, "Salary" : 4000 }, { "EmpId" : 1005, "Salary" : 5000 } ] }, { "Id" : "101", "EmployeeName" : "Mike", "EmployeeDetails" : [ { "EmpId" : 1001, "Salary" : 1000 }, { "EmpId" : 1002, "Salary" : 2000 } ] } ] }