MongoDB-তে অগ리게শন এবং $setUnion অপারেটর ব্যবহার করে অ্যারে থেকে ডুপ্লিকেট মুছে ফেলা
MongoDB অ্যারেতে থাকা ডুপ্লিকেট ভ্যালুগুলো সরাতে অগ리게শন পাইপলাইনে $setUnion অপারেটর ব্যবহার করা হয়।
ধাপ ১: ডকুমেন্টসহ কালেকশন তৈরি করুন
> db.removeDuplicatesDemo.insertOne({
"InstructorName": "Chris",
"InstructorAge": 34,
"InstructorSubject": ["Java", "C", "Java", "C++", "MongoDB", "MySQL", "MongoDB"]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb9d96c895c4fd159f80807") }
ধাপ ২: সব ডকুমেন্ট প্রদর্শন করুন
> db.removeDuplicatesDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5cb9d96c895c4fd159f80807"),
"InstructorName" : "Chris",
"InstructorAge" : 34,
"InstructorSubject" : [
"Java",
"C",
"Java",
"C++",
"MongoDB",
"MySQL",
"MongoDB"
]
}
ধাপ ৩: অগ리게শন দিয়ে ডুপ্লিকেট মুছে ফেলুন
> db.removeDuplicatesDemo.aggregate([
{
"$project": {
"InstructorName": 1,
"InstructorAge": 1,
"InstructorSubject": {
"$setUnion": ["$InstructorSubject", []]
}
}
}
]).pretty();
ফলাফল:
{
"_id" : ObjectId("5cb9d96c895c4fd159f80807"),
"InstructorName" : "Chris",
"InstructorAge" : 34,
"InstructorSubject" : [
"C",
"C++",
"Java",
"MongoDB",
"MySQL"
]
}
ব্যাখ্যা:
$setUnionঅপারেটরটি একাধিক সেটের ইউনিয়ন (union) রিটার্ন করে, যেখানে ডুপ্লিকেট ভ্যালুগুলো অটোমেটিক্যালি সরিয়ে ফেলা হয়["$InstructorSubject", []]- এখানে খালি অ্যারে[]দিয়ে সেট ইউনিয়ন করা হয়েছে, ফলে মূল অ্যারেটি থেকে ডুপ্লিকেট সরিয়ে ইউনিক ভ্যালুগুলো পাওয়া গেছে- ফলাফলে ভ্যালুগুলো অ্যালফাবেটিক্যালি সর্টেড হয়ে আসে
নোট: $setUnion সেট অপারেশন হওয়ায় ফলাফলে অর্ডার গ্যারান্টি করা হয় না (সাধারণত সর্টেড হয়)।