MongoDB-এ যখন কোনো অ্যারে ফিল্ডে নির্দিষ্ট সব এলিমেন্টগুলো আছে কিনা যাচাই করতে হয়, তখন $all অপারেটর ব্যবহার করা হয়। $all অপারেটর সেই ডকুমেন্টগুলো সিলেক্ট করে যেখানে একটি ফিল্ডের মান এমন একটি অ্যারে যা নির্দিষ্ট সকল এলিমেন্টগুলো ধারণ করে।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo543.insertOne({id:101, subject:["MySQL", "Java" ,"C","Python"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e1b2f9e5f92834d7f05c9") }
> db.demo543.insertOne({id:102, subject:["MySQL", "MongoDB" ,"SQL Server"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e1b2f9e5f92834d7f05ca") }
সব ডকুমেন্ট দেখানো
> db.demo543.find();
আউটপুট:
{ "_id" : ObjectId("5e8e1b2f9e5f92834d7f05c9"), "id" : 101, "subject" : [ "MySQL", "Java", "C", "Python" ] }
{ "_id" : ObjectId("5e8e1b2f9e5f92834d7f05ca"), "id" : 102, "subject" : [ "MySQL", "MongoDB", "SQL Server" ] }
নির্দিষ্ট অ্যারে এলিমেন্ট সমাহিত ডকুমেন্ট খোঁজা
যে ডকুমেন্টগুলোতে subject অ্যারেতে "MySQL", "MongoDB", এবং "SQL Server" — এই তিনটি এলিমেন্ট সবগুলো থাকে, সেগুলো বের করতে:
> db.demo543.find({
"subject": { $all: [ "MySQL", "MongoDB", "SQL Server" ], $size: 3 }
})
व्याख্যা:
$all: [ "MySQL", "MongoDB", "SQL Server" ]— এই তিনটি এলিমেন্ট অ্যারেতে থাকতে হবে।$size: 3— অ্যারেতে মোট ৩টি এলিমেন্ট থাকবে (অতিরিক্ত কোনো এলিমেন্ট থাকবে না)।
আউটপুট:
{ "_id" : ObjectId("5e8e1b2f9e5f92834d7f05ca"), "id" : 102, "subject" : [ "MySQL", "MongoDB", "SQL Server" ] }
মূল পয়েন্টসমূহ
$allঅপারেটর অর্ডার বিবেচনা করে না, শুধু সব এলিমেন্ট থাকা জরুরি।$sizeব্যবহার করে অ্যারের সাইজ নির্দিষ্ট করা যায়।- এটি এক্সएक্ট ম্যাচ (exact match) নয়, সাবসেট (subset) ম্যাচ।