2011-10-14 12 views
5

मुझे लगता है कि दस्तावेज़ पढ़ रहा हूँ: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24modMongoDB तीव्र क्वेरी जावास्क्रिप्ट

$mod 

$ आधुनिक ऑपरेटर आप तेजी से सापेक्ष प्रश्नों करने के लिए जहां खंड के लिए एक आम मामले को बदलने के लिए अनुमति देता है। उदाहरण के लिए, निम्नलिखित $ जहां क्वेरी:

db.things.find("this.a % 10 == 1") 

द्वारा प्रतिस्थापित किया जा सकता है:

db.things.find({ a : { $mod : [ 10 , 1 ] } }) 

तो मैं समझ में नहीं आया कि क्या fast यहाँ का मतलब है। प्रदर्शन?

उत्तर

3

मैंने इसे बेंचमार्क नहीं किया है, लेकिन शायद इसका मतलब वास्तव में प्रदर्शन होगा। स्पष्ट रूप से "$ जहां" प्रत्येक ऑब्जेक्ट के लिए जावास्क्रिप्ट निष्पादित करता है, लेकिन "$ mod" एक mongodb देशी ऑपरेटर है, जो बहुत तेज होना चाहिए, क्योंकि प्रत्येक ऑब्जेक्ट के लिए किसी भी जावास्क्रिप्ट को निष्पादित करने की आवश्यकता नहीं है।

Javascript executes more slowly than the native operators listed on this page, 
but is very flexible. 

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

+0

आप @Andrew Orsich के सूचकांक जवाब के बारे में कोई विचार है? – kamaci

+0

जावास्क्रिप्ट प्रश्नों के लिए इंडेक्स का उपयोग करना संभव नहीं है, क्योंकि प्रत्येक क्वेरी के लिए जावास्क्रिप्ट का मूल्यांकन किया जाना चाहिए, जिसे आपकी क्वेरी के साथ चुना गया है। तो: यदि आपके पास * $ mod * और जावास्क्रिप्ट जैसे बिल्ट-इन ऑपरेटर के बीच विकल्प है, तो जावास्क्रिप्ट हमेशा धीमा होना चाहिए, क्योंकि प्रत्येक ऑब्जेक्ट के लिए जावास्क्रिप्ट का मूल्यांकन किया जाता है * और * यह एक इंडेक्स का उपयोग नहीं कर सकता है, जबकि बिल्टिन ऑपरेटर का मूल्यांकन केवल तभी किया जाता है जब आपकी क्वेरी mongodb * द्वारा पार्स की जाती है और * यह एक अनुक्रमणिका का उपयोग कर सकती है। यह संभवतः दिलचस्प होगा, यह बेंचमार्क करने के लिए ... – aurora

+0

आपके उत्तर के लिए धन्यवाद। बस एक और। इंडेक्सिंग के साथ आपका क्या मतलब है मैं इसे कहीं से भी पढ़ सकता हूं? मुझे लगता है कि मुझे नहीं पता कि क्या। – kamaci

1

किसी भी MongoDB में जावास्क्रिप्ट/regex प्रश्नों अनुक्रमित उपयोग नहीं कर सकते और धीमी गति से काम करते हैं: भी दस्तावेज़ से निम्नलिखित वाक्य पर एक नज़र डालें। तो आपके प्रश्न का उत्तर हाँ है, दस्तावेज़ीकरण प्रदर्शन के बारे में कहते हैं। सर्वर साइड के बारे में

अधिक जानकारी जावास्क्रिप्ट आप पा सकते हैं here

संबंधित मुद्दे