चूंकि आप पहले से ही (a, b)
. के लिए एक कंपाउंड इंडेक्स बना चुके हैं , आपके सभी क्लॉज एक्सप्रेशन इंडेक्स द्वारा समर्थित हैं -> मोंगो संग्रह स्कैन के बजाय इंडेक्स स्कैन का उपयोग करेगा। यह शायद काफी तेज है।
संदर्भ:$या क्लॉज और इंडेक्सए>
अब आपके प्रश्न के बारे में
$in
पूरे मैदान का मिलान करें। यदि आप (a,b)
. से मिलान करना चाहते हैं तो स्पष्ट रूप से (a,b)
$in
. के साथ खोजने के लिए एक एम्बेडेड ऑब्जेक्ट बनना चाहिए .
सुनिश्चित नहीं है कि एम्बेडेड ऑब्जेक्ट बनाना आपकी वर्तमान स्कीमा/आवश्यकता के अनुरूप है। लेकिन अगर ऐसा है, तो $in
$or
. की तुलना में बेहतर प्रदर्शन के लिए जाना जाता है
:
इस मामले में, यदि आपके पास एम्बेडेड ऑब्जेक्ट है जैसे:{e: {a: 'x', b: 'y'}}
फिर db.collections.createIndex({e: 1})
$in
. के साथ युग्मित चीजों को गति देगा