शुरू करने से पहले मैं दो बिंदु जोड़ूंगा-
- मोंगो का उपयोग करते समय, हमेशा [long., lat.] तरीके से स्थान डालें
- कृपया निर्दिष्ट करें कि आप किस प्रकार की ज्यामिति डाल रहे हैं। mongoDB दस्तावेज़ीकरण देखें प्रकारों के बारे में अधिक जानकारी के लिए।
आपकी क्वेरी पर आते हुए, मैंने आपके प्रश्न के रूप में तीन बिंदु जोड़े और मेरा डेटा नीचे जैसा दिखता है-
> db.test.find()
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ] }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ] }
मैंने टाइप दिया है:"प्वाइंट" क्योंकि यह मोंगो में गोलाकार प्रकार के स्थानों का उपयोग करने के लिए एक आरक्षित कुंजी है। इसके अलावा मैंने स्थान के लिए [long, lat] जोड़ा है। बाद में मैंने loc फ़ील्ड पर 2dSphere इंडेक्स जोड़ा।
db.test.createIndex({loc:"2dsphere"})
फिर मैंने मराठाहल्ली से दूरी जानने के लिए नीचे दिए गए प्रश्न को निष्पादित किया [77.6974,12.9591]-
> db.test.aggregate([ {$geoNear: { near :{type: "Point", coordinates:[77.6974,12
.9591]}, distanceField: "distance", spherical: true } } ])
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ], "distance": 9583.305405402776 }
{ "_id" : "ShanthiNgr", "type" : "Point", "loc" : [ 77.6836, 12.8486 ], "distance" : 12391.53898270671 }
{ "_id" : "Majestic", "type" : "Point", "loc" : [ 77.5712, 12.9766 ], "distance": 13828.057829128267 }
उपरोक्त क्वेरी केवल दूरी जानने के परीक्षण के उद्देश्य से है। यह मीटर में दूरी बताता है ताकि मैं इसे आसानी से किलोमीटर में बदल सकूं।
अब मैं 10 किलोमीटर के भीतर मराठाहल्ली से स्थानों को खोजने के लिए क्वेरी के नीचे चला गया। दूरी और मुझे मेरा वांछित परिणाम मिला-
> db.test.find({ loc:{ $near:{ $geometry: {type: "Point" , coordinates:[77.6974,12.9591] }, $maxDistance:10000 }}})
{ "_id" : "madiwala", "type" : "Point", "loc" : [ 77.6174, 12.9226 ] }
आप जिस दृष्टिकोण का प्रयास कर रहे थे, उसमें मुझे कुछ समस्याएं मिलीं-
- स्थानों को [लंबे, अक्षांश] तरीके से दिया जाना चाहिए।
- टाइप:पॉइंट टाइप लोकेशन का उपयोग करने के लिए "प्वाइंट" देना होगा। यह आरक्षित कीवर्ड है।
- यहां मीटर में दूरी ली जाएगी। कुछ स्थानों पर इसे रेडियन के साथ-साथ मोंगो में भी लिया जाता है। कृपया देखें यहए> mongoDB doc रेडियन दूरी के बारे में अधिक जानकारी के लिए।
आशा है कि यह आपकी मदद करेगा...आपका दिन शुभ हो...:)