दिलचस्प..समस्या यह है कि.. $in और $or ऑपरेटर उस सरणी के तत्वों पर लागू होते हैं जिनकी आप तुलना कर रहे हैं खिलाफ संग्रह में प्रत्येक दस्तावेज़, दस्तावेज़ों में सरणियों के तत्वों पर नहीं..अपने प्रश्न को सारांशित करने के लिए:आप चाहते हैं कि यह एक मिलान हो, यदि संग्रह में कोई दस्तावेज़ सबसेट पारित सरणी के। जब तक आप अपना इनपुट और आउटपुट स्वैप नहीं करते, मैं ऐसा करने का कोई तरीका नहीं सोच सकता। मेरा मतलब है..आइए अपना पहला इनपुट लें:
db.test.find( {a: [1,2,3,4]} );
इसे अस्थायी संग्रह में डालने पर विचार करें, जैसे अस्थायी:db.temp.save( {a: [1,2,3,4]} );
अब परीक्षण संग्रह में प्रत्येक दस्तावेज़ पर पुनरावृति करें और इसे अस्थायी रूप से 'ढूंढें', $all ऑपरेटर के साथ यह सुनिश्चित करने के लिए कि यह पूरी तरह से समाहित है, यानी, ऐसा कुछ करें:foreach(doc in test)
{
db.temp.find( { a: { $all: doc.a } } );
}
यह निश्चित रूप से एक समाधान है! मुझे यकीन नहीं है कि मुझे कोई अन्य ऑपरेटर याद आ रहा है जो यह काम कर सकता है।