MongoDB-এ $all অপারেটর: অ্যারেতে সব নির্দিষ্ট উপাদান থাকা ডকুমেন্ট বের করা
$all অপারেটর দিয়ে এমন ডকুমেন্ট খুঁজা যায় যাদের অ্যারে ফিল্ডে সব নির্দিষ্ট উপাদান উপস্থিত থাকে (অর্ডার মানে না, অতিরিক্ত উপাদান থাকতে পারে)।
উদাহরণ: ডেটা ইনসার্ট
> db.demo163.insertOne({ "ClientDetails": [ {"ClientName": "Chris"}, {"ClientName": "David"} ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d49e4f06af551997c5") }
> db.demo163.insertOne({ "ClientDetails": [ {"ClientName": "Mike"}, {"ClientName": "Sam"} ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c6") }
> db.demo163.insertOne({ "ClientDetails": [ {"ClientName": "Robert"}, {"ClientName": "Sam"} ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e3686d59e4f06af551997c7") }
সব ডকুমেন্ট দেখানো
> db.demo163.find();
আউটপুট:
{ "_id" : ObjectId("5e3686d49e4f06af551997c5"), "ClientDetails" : [ { "ClientName" : "Chris" }, { "ClientName" : "David" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }
{ "_id" : ObjectId("5e3686d59e4f06af551997c7"), "ClientDetails" : [ { "ClientName" : "Robert" }, { "ClientName" : "Sam" } ] }
$all কোয়ারি (ClientDetails-এ "Mike" ও "Sam" দুটোই থাকা ডকুমেন্ট)
> db.demo163.find({"ClientDetails": {$all: [{"ClientName": "Mike"}, {"ClientName": "Sam"}]}});
আউটপুট:
{ "_id" : ObjectId("5e3686d59e4f06af551997c6"), "ClientDetails" : [ { "ClientName" : "Mike" }, { "ClientName" : "Sam" } ] }
ব্যাখ্যা
{$all: [{"ClientName":"Mike"}, {"ClientName":"Sam"}]}—ClientDetailsঅ্যারেতে দুটোই অবজেক্ট থাকতে হবে (অর্ডার নয়)۔- তৃতীয় ডকুমেন্টে "Sam" আছে কিন্তু "Mike" নেই, তাই মিলেনি।
$allস্ট্রিং অ্যারেতেও কাজ করে:{tags: {$all: ["mongodb", "database"]}}।- ইন্ডেক্স ব্যবহার করে (মাল্টিকি ইন্ডেক্স) তাই দ্রুত চলে।
ফারক: $in — যেকোনো একটি মেললেই চলবে। $all — সবগুলো মেলতে হবে।