MongoDB-এ $and ও $or কম্বাইন করে জটিল নেস্টেড শর্তে কোয়ারি
একাধিক শর্ত একসাথে পূরণ করতে $and, এবং उनमें যেকোনো একটি পূরণ করলে $or ব্যবহার করা হয়। এই দুটো কম্বাইন করে জটিল লজিক বাস্তবায়ন করা যায়।
উদাহরণ: ডেটা ইনসার্ট
> db.demo12.insertOne({"Name":"Chris","Age":23,"CountryName":"US","Message":"Hello"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f70a2d7df943a7cec4fa2") }
> db.demo152.insertOne({"Name":"David","Age":21,"CountryName":"US","Message":"Hello"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f70acd7df943a7cec4fa3") }
> db.demo12.insertOne({"Name":"Bob","Age":23,"CountryName":"AUS","Message":"Hi"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f70bad7df943a7cec4fa4") }
> db.demo12.insertOne({"Name":"Carol","Age":24,"CountryName":"US","Message":"Hi"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f70c7d7df943a7cec4fa5") }
সব ডকুমেন্ট দেখানো
> db.demo12.find();
আউটপুট:
{ "_id" : ObjectId("5e0f70a2d7df943a7cec4fa2"), "Name" : "Chris", "Age" : 23, "CountryName" : "US", "Message" : "Hello" }
{ "_id" : ObjectId("5e0f70acd7df943a7cec4fa3"), "Name" : "David", "Age" : 21, "CountryName" : "US", "Message" : "Hello" }
{ "_id" : ObjectId("5e0f70bad7df943a7cec4fa4"), "Name" : "Bob", "Age" : 23, "CountryName" : "AUS", "Message" : "Hi" }
{ "_id" : ObjectId("5e0f70c7d7df943a7cec4fa5"), "Name" : "Carol", "Age" : 24, "CountryName" : "US", "Message" : "Hi" }
নেস্টেড সার্চ কোয়ারি (Name=Bob AND Age=23 AND (CountryName=UK OR Message=Hi))
> db.demo12.find({ $and : [ { Name : 'Bob' }, { Age : 23 }, { $or : [ { CountryName : 'UK' }, { Message : 'Hi' } ] } ] } );
আউটপুট:
{ "_id" : ObjectId("5e0f70bad7df943a7cec4fa4"), "Name" : "Bob", "Age" : 23, "CountryName" : "AUS", "Message" : "Hi" }
ব্যাখ্যা
$and— সব শর্ত পূরণ করতে হবে।$or— বন্ধনীর ভেতরের যেকোনো একটি পূরণ করলেই চলবে।- Bob-এর CountryName "AUS" (UK নয়), কিন্তু Message "Hi" — তাই $or সত্য, পুরো $and সত্য।
- নোট: টপ-লেভেলে কমা-সেপারেটেড শর্তগুলো ইমপ্লিসিটলি $and হয়। অর্থাৎ
{Name:'Bob', Age:23, $or:[...]}লিখলেই চলে। স্পষ্ট$andতখন লাগে যখন একই ফিল্ডে একাধিক শর্ত দরকার (যেমন{$and: [{price:{$gt:10}}, {price:{$lt:20}}]})।