MongoDB-এ একাধিক ডকুমেন্ট মার্জ করা
MongoDB-এ একাধিক ডকুমেন্ট মার্জ করতে aggregate() পাইপলাইন ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:
নমুনা ডেটা তৈরি
> db.demo436.insertOne({
"_id": "101",
"Name": "Chris",
"details": [{ "CountryName": "US", "Age": 21 }],
"Price": 50
})
> db.demo436.insertOne({
"_id": "102",
"Name": "Chris",
"details": [{ "CountryName": "UK", "Age": 22 }],
"Price": 78
})
> db.demo436.insertOne({
"_id": "103",
"Name": "Chris",
"details": [{ "CountryName": "US", "Age": 21 }],
"Price": 50
})
সমস্ত ডকুমেন্ট দেখানো
> db.demo436.find()
আউটপুট:
{ "_id": "101", "Name": "Chris", "details": [{ "CountryName": "US", "Age": 21 }], "Price": 50 }
{ "_id": "102", "Name": "Chris", "details": [{ "CountryName": "UK", "Age": 22 }], "Price": 78 }
{ "_id": "103", "Name": "Chris", "details": [{ "CountryName": "US", "Age": 21 }], "Price": 50 }
একাধিক ডকুমেন্ট মার্জ করার কোয়েরি
> db.demo436.aggregate([
{ $sort: { _id: 1, Name: 1 } },
{ $unwind: "$details" },
{ $group: {
_id: "$Name",
details: { $push: "$details" },
Price: { $sum: "$Price" },
id: { $last: { $concat: ["$_id", "_", "AppendedValue"] } },
Name: { $last: "$Name" }
}},
{ $addFields: { Id: "NewIdAppped", _id: "$id" }},
{ $project: { "id": 0 }}
])
ফলাফল:
{ "_id": "103_AppendedValue", "details": [{ "CountryName": "US", "Age": 21 }, { "CountryName": "UK", "Age": 22 }, { "CountryName": "US", "Age": 21 }], "Price": 178, "Name": "Chris", "Id": "NewIdAppped" }
ব্যাখ্যা
$sort: ডকুমেন্টগুলো সাজায়$unwind: অ্যারে ফিল্ডটি বিচ্ছিন্ন করে প্রতিটি এলিমেন্টকে আলাদা ডকুমেন্ট বানায়$group: একই নামের ডকুমেন্টগুলো গ্রুপ করে ডিটেইলস একত্রিত করে এবং প্রাইস যোগ করে$addFieldsও$project: আউটপুট ফরম্যাট করে