2013-03-21 6 views
8

ऐसा लगता है कि मोंगोडब भू-स्थानिक प्रश्नों के लिए दो समान कार्यों की पेशकश करता है - $near और $geoNear। मोंगो डॉक्सmongodb geoNear बनाम

के अनुसार geoNear कमांड $ निकट ऑपरेटर का विकल्प प्रदान करता है। में $ की कार्यक्षमता के अतिरिक्त, geoNear अतिरिक्त नैदानिक ​​जानकारी देता है।

ऐसा लगता है कि geoNear तरह near कार्यक्षमता का सुपरसेट प्रदान करता है। उदाहरण के लिए, near केवल निकटतम 100 दस्तावेज़ लौटाता है, जबकि geoNear आपको अधिकतम निर्दिष्ट करने देता है। के बजाय near का उपयोग करने का कोई कारण है? क्या दूसरे की तुलना में एक और अधिक कुशल है?

उत्तर

15

दक्षता या तो समान होनी चाहिए।

geoNear की प्रमुख सीमा यह है कि कमांड के रूप में यह अधिकतम दस्तावेज़ आकार तक सेट परिणाम लौटा सकता है क्योंकि सभी मिलान किए गए दस्तावेज़ एक परिणाम परिणाम में वापस आते हैं। यह भी आवश्यक है कि प्रत्येक परिणाम दस्तावेज़ में दूरी फ़ील्ड जोड़ा जाए जो आपके उपयोग के आधार पर कोई समस्या हो या न हो।

$near एक क्वेरी ऑपरेटर है इसलिए परिणाम एक दस्तावेज़ से बड़े हो सकते हैं (वे अभी भी एक ही प्रतिक्रिया में लौट आए हैं लेकिन एक दस्तावेज़ नहीं)। आप क्वेरी की सीमा() के माध्यम से अधिकतम संख्या में दस्तावेज़ भी सेट कर सकते हैं।

मैं सिफारिश करने के लिए है कि उपयोगकर्ताओं को $near साथ चिपके रहते हैं जब तक कि वे diagnosticsgeonear आदेश से (उदाहरण के लिए, दूरी, या मेल खाने स्थान) की जरूरत होती है।

+0

स्पष्टीकरण के लिए धन्यवाद। एक बात जो अस्पष्ट है वह यह है कि निकट के दस्तावेज़ यह कहते हैं कि यह 100 दस्तावेज देता है, लेकिन मेरे परीक्षण में मोंगो 2.4 के साथ, यह मामला प्रतीत नहीं होता है। ऐसा लगता है कि जब तक सीमा का उपयोग नहीं किया जाता है तब तक सभी दस्तावेजों को वापस कर दिया जाता है क्या आप जानते हैं कि व्यवहार क्या होना चाहिए? –

+0

संक्षिप्त उत्तर: नहीं, मुझे नहीं पता कि अपेक्षित 2.4 व्यवहार क्या है। इस जिरा टिकट के अनुसार (https: //jira.mongodb।संगठन/ब्राउज़/सर्वर -5236) उन्होंने अभी भी $ प्रगतिशील प्रश्नों से "प्रगतिशील" परिणाम तय नहीं किए हैं, इसलिए यह किसी बिंदु पर रुक जाएगा। आप जो देख रहे हैं वह यह है कि प्रश्न पहले बैच में जितना संभव हो उतना परिणाम लौटा रहा है लेकिन आखिरकार उस बैच का आकार समाप्त हो जाना चाहिए। रोब। –

+0

कम से कम ऐसा लगता है कि यह 100 तक सीमित नहीं है, जिसे मैंने सोचा था। सहायता के लिए धन्यवाद। –

1

100 दस्तावेजों GeoNear साथ की सीमा डिफ़ॉल्ट व्यवहार है, लेकिन तुम सिर्फ MongoDB प्रलेखन (http://docs.mongodb.org/manual/reference/command/geoNear/)

डिफ़ॉल्ट 100 पर सेट है, लेकिन आप अधिक सेट कर सकते हैं पर वर्णित है संख्या क्षेत्रों सेट कर सकते हैं। दुर्भाग्य से छोड़ पैरामीटर (https://jira.mongodb.org/browse/SERVER-3925 देखें)

+0

मैंने सोचा कि करीब 100 भी डिफ़ॉल्ट है लेकिन ऐसा लगता है कि यह मामला नहीं है –

1

इन प्रमुख मतभेद हैं पल के लिए याद आ रही है: -

  1. $ geoNear भी बिंदु से आप दूरी देता है, लेकिन $ आदेश के पास नहीं है।

  2. $ geoNear कमांड के लिए आवश्यक है कि संग्रह में केवल एक 2 डी इंडेक्स और/या केवल एक 2 डीएसपीयर इंडेक्स हो, जबकि भू-स्थानिक क्वेरी ऑपरेटर $ जैसे और $ geoWithin परमिट को एकाधिक भू-स्थानिक सूचकांक रखने की अनुमति दें। ऐसा इसलिए है क्योंकि $ geoNear कमांड में उस फ़ील्ड को निर्दिष्ट करने का कोई विकल्प नहीं है जिस पर आप खोजना चाहते हैं, जहां $ कमांड में आप फ़ील्ड नाम निर्दिष्ट कर सकते हैं।

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