MongoDB-এ নেস্টেড অ্যারে অবজেক্টের একাধিক ফিল্ডে যেকোনো একটি শর্ত মэтช করলে ডকুমেন্ট রিটার্ন করতে $or ব্যবহার করা হয়। limit(1) দিয়ে শুধু প্রথম ডকুমেন্ট নেওয়া যায়।
নমুনা ডেটা তৈরি (StudentOtherDetails অ্যারে অবজেক্ট)
> db.matchElementInArrayDemo.insertOne({
"StudentName": "Chris",
"StudentOtherDetails": [
{"StudentCountryName": "US", "StudentSkills": "MongoDB"},
{"StudentCountryName": "UK", "StudentSkills": "Java"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd423282cba06f46efe9ee2") }
> db.matchElementInArrayDemo.insertOne({
"StudentName": "Chris",
"StudentOtherDetails": [
{"StudentCountryName": "AUS", "StudentSkills": "PHP"},
{"StudentCountryName": "US", "StudentSkills": "MongoDB"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd423412cba06f46efe9ee3") }
সব ডকুমেন্ট দেখুন
> db.matchElementInArrayDemo.find().pretty();আউটপুট:
{
"_id": ObjectId("5cd423282cba06f46efe9ee2"),
"StudentName": "Chris",
"StudentOtherDetails": [
{"StudentCountryName": "US", "StudentSkills": "MongoDB"},
{"StudentCountryName": "UK", "StudentSkills": "Java"}
]
}
{
"_id": ObjectId("5cd423412cba06f46efe9ee3"),
"StudentName": "Chris",
"StudentOtherDetails": [
{"StudentCountryName": "AUS", "StudentSkills": "PHP"},
{"StudentCountryName": "US", "StudentSkills": "MongoDB"}
]
}
$or দিয়ে CountryName=US অথবা Skills=MongoDB মэтচ করা (limit 1)
> db.matchElementInArrayDemo.find({
$or: [
{"StudentOtherDetails.StudentCountryName": "US"},
{"StudentOtherDetails.StudentSkills": "MongoDB"}
]
}).limit(1);
আউটপুট (প্রথম ডকুমেন্ট):
{
"_id": ObjectId("5cd423282cba06f46efe9ee2"),
"StudentName": "Chris",
"StudentOtherDetails": [
{"StudentCountryName": "US", "StudentSkills": "MongoDB"},
{"StudentCountryName": "UK", "StudentSkills": "Java"}
]
}
ব্যাখ্যা: ডট নোটেশন দিয়ে অ্যারে অবজেক্টের ফিল্ডে কোয়েরি করলে অ্যারেতে যেকোনো একটি উপাদান মэтช করলে ডকুমেন্ট রিটার্ন হয়। $or দিয়ে একাধিক শর্তে যেকোনো একটি মэтচ করলে কাজ করে।