MongoDB में उन दस्तावेज़ों को ढूंढने के लिए जहां एक सरणी फील्ड में निर्दिष्ट तत्वों का एक सेट हो (किसी भी क्रम में), $all ऑपरेटर का उपयोग करें। यह उन दस्तावेज़ों का चयन करता है जहां सरणी में सभी निर्दिष्ट तत्व हों।
उदाहरण: नेस्टेड ऑब्जेक्ट्स की सरणी वाले दस्तावेज़
> db.demo370.insertOne({
"Name" : "Chris",
"details" : [
{ "Subject" : "MySQL", "CountryName" : "US" },
{ "Subject" : "MongoDB", "CountryName" : "UK" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e9892ae06a1609a00af0") }
> db.demo370.insertOne({
"Name" : "David",
"details" : [
{ "Subject" : "Java", "CountryName" : "AUS" },
{ "Subject" : "Spring", "CountryName" : "UK" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e9972ae06a1609a00af1") }
दस्तावेज़ देखना
> db.demo370.find();
आउटपुट: अलग-अलग ऑब्जेक्ट्स के साथ दो दस्तावेज़।
क्वेरी: दोनों निर्दिष्ट ऑब्जेक्ट्स वाली सरणी वाले दस्तावेज़ ढूंढें (किसी भी क्रम में)
> db.demo370.find({
details: { $all: [
{ "Subject": "MySQL", "CountryName" : "US" },
{ "Subject": "MongoDB", "CountryName" : "UK" }
]}
});
परिणाम
केवल पहला दस्तावेज़ (Chris) लौटाया जाता है क्योंकि इसकी सरणी में दोनों निर्दिष्ट ऑब्जेक्ट्स हैं।
मुख्य व्यवहार
$allसरणी फील्ड पर काम करता है।- निर्दिष्ट प्रत्येक तत्व के लिए, सरणी में कम से कम एक तत्व होना चाहिए जो समान हो (सभी फील्ड्स मेल खाते हैं)।
- सरणी में तत्वों का क्रम मायने नहीं रखता।
- यदि सरणी में डुप्लिकेट हैं, तो
$allतब भी मेल खाता है जब प्रत्येक आवश्यक तत्व कम से कम एक बार मौजूद हो।
तुलना
| ऑपरेटर | व्यवहार |
|---|---|
$all | सरणी में सभी निर्दिष्ट तत्व होने चाहिए (किसी भी क्रम में)। |
$in | सरणी में निर्दिष्ट तत्वों में से कम से कम एक होना चाहिए। |
$elemMatch | एक एकल सरणी तत्व सभी निर्दिष्ट मानदंडों को पूरा करता है। |
प्रदर्शन
$all इंडेक्स का उपयोग कर सकता है यदि क्वेरी किए गए फील्ड पर इंडेक्स मौजूद है। बड़े सरणी के लिए, इंडेक्स सुनिश्चित करें।