MongoDB-এ নির্দিষ্ট শর্তাবলী নয় এমন ডকুমেন্ট ফেচ করতে $nor অপারেটর ব্যবহার করা হয়। এটি $or-এর বিপরীত কাজ করে - সব শর্ত মিথ্যা হলে ডকুমেন্ট রিটার্ন করে।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo100.insertOne({"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d9624b8903cdd865577c0") }
> db.demo100.insertOne({"Name":"David","Age":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d962cb8903cdd865577c1") }
> db.demo100.insertOne({"Name":"Bob","Age":19});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d9634b8903cdd865577c2") }
সব ডকুমেন্ট দেখানো
> db.demo100.find();
আউটপুট:
{ "_id" : ObjectId("5e2d9624b8903cdd865577c0"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e2d962cb8903cdd865577c1"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e2d9634b8903cdd865577c2"), "Name" : "Bob", "Age" : 19 }
NOR কোয়ারী বাস্তবায়ন
$nor এ্যারেতে ৪টি শর্ত দেওয়া হয়েছে - যেকোনো একটি সত্য হলে ডকুমেন্ট বাদ যাবে:
> db.demo100.find({
... $nor: [
... { Name: "Chris" },
... { Name: { $exists: false } },
... { Age: 21 },
... { Age: { $exists: false } }
... ]
... });
ফলাফল
{ "_id" : ObjectId("5e2d962cb8903cdd865577c1"), "Name" : "David", "Age" : 23 }
{ "_id" : ObjectId("5e2d9634b8903cdd865577c2"), "Name" : "Bob", "Age" : 19 }
ব্যাখ্যা - কোন ডকুমেন্ট বাদ পড়েছে এবং কেন:
| ডকুমেন্ট | Name: Chris | Name missing | Age: 21 | Age missing | $nor ফলাফল |
|---|---|---|---|---|---|
| Chris, 21 | True ✓ | False | True ✓ | False | বাদ (২টি শর্ত সত্য) |
| David, 23 | False | False | False | False | রাখা (সব মিথ্যা) |
| Bob, 19 | False | False | False | False | রাখা (সব মিথ্যা) |
গুরুত্বপূর্ণ: $nor শুধু তখনই ডকুমেন্ট রিটার্ন করে যখন সব শর্ত মিথ্যা (false) হয়। উপরের উদাহরণে "David" এবং "Bob" - যেকোনো শর্ত তাদের জন্য সত্য নয়।
ব্যবহার ক্ষেত্র: ব্ল্যাকলিস্ট ফিল্টারিং, এক্সক্লুশন লজিক, "এই শর্তগুলো 제외한 সব" টাইপ কোয়ারী।
তুলনা: $not একক এক্সপ্রেশনের 네가েশন, $nor একাধিক শর্তের NOR লজিক।