2011-10-16 9 views
5

मैं अपने वेब एप्लिकेशन के लिए MongoDB का उपयोग कर रहा हूं। मान लें कि आने वाले अनुरोधों के लिए मोंगोडीबी पर 'ढूंढें()' होगा। मोंगोडीबी संग्रह पर इंडेक्स जोड़ने के लिए अनुशंसित तरीका/स्थान क्या है?एक वेब अनुप्रयोग के लिए MongoDB संग्रह पर इंडेक्स बनाने के लिए अनुशंसित तरीका/स्थान

विकल्प के बारे में सोच सकते हैं के युगल: -

1) संग्रह पर 'ensureIndex' जबकि आवेदन आरंभ। [लेकिन पहली बार आवेदन शुरू करने पर मैं 'sureindex' कैसे शुरू करूं? चूंकि वहां कोई डेटा नहीं होगा]

2 'findIndex' प्रत्येक 'खोज' ऑपरेशन (वेब ​​अनुरोध पर) से पहले? लेकिन क्या यह एक ओवरहेड नहीं है, भले ही 'sureIndex' इंडेक्स नहीं बनाएगा अगर यह पहले से ही बनाया गया है?

कोई अन्य विकल्प?

अग्रिम धन्यवाद।

उत्तर

4

जब आप एप्लिकेशन को प्रारंभ करते हैं तो मैं इसे रखूंगा। यदि संग्रह सुनिश्चित नहीं होता है कि जब आप इंडेक्स सुनिश्चित करते हैं, तो उस समय इंडेक्स (और संग्रह) बनाया जाएगा।

मुझे लगता है कि आप एक प्राथमिकता जानते हैं कि आप डेटा पर किस प्रकार के प्रश्न चलेंगे, और आप किस प्रकार का डेटा इंडेक्स में डाल देंगे।

+3

+1 यह भी उल्लेखनीय है कि 'db.coll.ensureIndex ({foo: 1})' संग्रह खाली है, भले ही फ़ील्ड 'foo' पर एक अनुक्रमणिका बना सकता है। – Nikhil

0

जब आप एप्लिकेशन शुरू करते हैं तो सुनिश्चित करें कि इंडेक्स को स्पष्ट रूप से चलाएं। इससे कोई फर्क नहीं पड़ता कि आप एक खाली संग्रह पर सुनिश्चित इंडेक्स को कॉल करते हैं (क्योंकि यह बाद में डेटा को इंडेक्स में जोड़ देगा)।

इसके अलावा यह इस बात पर निर्भर करता है कि आपकी क्वेरी किस संपत्ति पर आधारित है। यदि आप लॉग इन उपयोगकर्ता के आधार पर उदाहरण क्वेरी के लिए हैं, तो आपको उपयोगकर्ता आईडी पर इंडेक्स जोड़ना चाहिए।

0

आप अपने सर्वर की कमांड लाइन से संग्रह के लिए प्रारंभिक स्क्रिप्ट बना सकते हैं (मोंगो डॉक्स चर्चा करते हैं कि मोंगो स्क्रिप्ट कैसे लिखें और उन्हें सीएलआई से कैसे चलाएं)। फिर जब भी मोंगोड शुरू होता है तब यह दौड़ता है? स्क्रिप्ट केवल संग्रह ऑब्जेक्ट पर इंडेक्स() को कॉल कर सकती है।