$nin অপারেটর ব্যবহার করে অ্যারে এলিমেন্ট ফিল্টার করা
যদি আপনি এমন ডকুমেন্ট খুঁজতে চান যাদের অ্যারে ফিল্ডে নির্দিষ্ট একটি ভ্যালু না থাকে, তবে $nin (not in) অপারেটর ব্যবহার করতে পারেন।
উদাহরণ ডেটা
> db.documentWithAParticularFieldValueDemo.insertOne({
"StudentId": 101,
"StudentDetails": [
{ "TheoryMarks": 78, "PracticalMarks": 91 },
{ "TheoryMarks": 75, "PracticalMarks": 75 }
]
});
> db.documentWithAParticularFieldValueDemo.insertOne({
"StudentId": 102,
"StudentDetails": [
{ "TheoryMarks": 91, "PracticalMarks": 91 },
{ "TheoryMarks": 75, "PracticalMarks": 75 }
]
});
কোয়েরি: TheoryMarks 78 নয় এমন ডকুমেন্ট খুঁজুন
> db.documentWithAParticularFieldValueDemo.find({
'StudentDetails.TheoryMarks': { $nin: [78] }
}).pretty();
ফলাফল:
{
"_id" : ObjectId("5c8edaf12f684a30fbdfd587"),
"StudentId" : 102,
"StudentDetails" : [
{ "TheoryMarks" : 91, "PracticalMarks" : 91 },
{ "TheoryMarks" : 75, "PracticalMarks" : 75 }
]
}
ব্যাখ্যা: প্রথম ডকুমেন্টে TheoryMarks: 78 আছে, তাই সেটি এক্সক্লুড হয়েছে। দ্বিতীয় ডকুমেন্টে ৭৮ নেই, তাই সেটি রিটার্ন হয়েছে।
টিপস: $nin ইনডেক্স ব্যবহার করতে পারে না যদি অ্যারে ফিল্ডে থাকে। বড় ডেটাসেটে পারফরম্যান্সের জন্য আলাদা ফিল্ড বা টেক্সট সার্চ বিবেচনা করুন।