দুই ফিল্ড কম্বাইন করে খুঁজে বের করতে $concat এবং $eq ব্যবহার করে $redact স্টেজে শর্ত দিন। একটি কালেকশন তৈরি করুন:
> db.demo502.insertOne({"FirstName":"John","LastName":"Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e875534987b6e0e9d18f56d") }
> db.demo502.insertOne({"FirstName":"David","LastName":"Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e87553e987b6e0e9d18f56e") }
> db.demo502.insertOne({"FirstName":"John","LastName":"Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e875543987b6e0e9d18f56f") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo502.find();
আউটপুট:
{ "_id" : ObjectId("5e875534987b6e0e9d18f56d"), "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : ObjectId("5e87553e987b6e0e9d18f56e"), "FirstName" : "David", "LastName" : "Miller" }
{ "_id" : ObjectId("5e875543987b6e0e9d18f56f"), "FirstName" : "John", "LastName" : "Doe" }
"John Doe" কম্বিনেশন খুঁজে বের করার অগরিগেশন কোয়েরি:
> db.demo502.aggregate([
{ "$redact": {
"$cond": [
{ "$eq": [
{ "$concat": [ "$FirstName", " ", "$LastName" ] },
"John Doe"
]},
"$$KEEP",
"$$PRUNE"
]
}}
])
আউটপুট:
ব্যাখ্যা:
$redactডকুমেন্ট ট্রাভার্স করে শর্ত মেনে না চলা শাখা গুলো প্রুন (Prune) করে দেয়।$concatফার্স্টনেম, স্পেস এবং লাস্টনেম জোড়ায়।$eqটার্গেট স্ট্রিংর সাথে মিলিয়ে$$KEEPবা$$PRUNEসিদ্ধান্ত নেয়। দ্রষ্টব্য: বড় ডেটাসেটে এটি পারফরম্যান্স ইস্যু তৈরি করতে পারে, ইন্ডেক্স ব্যবহার করা ভালো।