MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक मोंगोडब भौगोलिक स्थान क्वेरी में $maxDistance तर्क के रूप में ऑब्जेक्ट प्रॉपर्टी का उपयोग करना

आप इसे इस तरह से बिल्कुल नहीं कर सकते हैं - सामान्य तौर पर आप संग्रह में मूल्यों पर अपने MongoDB प्रश्नों में कुछ भी आधार नहीं बना सकते हैं।

हालाँकि, MongoDB 2.4 के बाद से हम 2dsphere . नामक एक नई अनुक्रमणिका का समर्थन करते हैं जो आपको न केवल डेटाबेस में अंक, बल्कि पॉलीगॉन को भी स्टोर करने की अनुमति देता है। आप उस जानकारी को एक दस्तावेज़ में संग्रहीत करेंगे जैसे:

db.so.ensureIndex( { loc: '2dsphere' } );
db.so.insert( {
    name: "Firestation 1",
    loc: {
        type: "Polygon",
        coordinates: [ [ [ 0, 0 ], [ 0, 1 ], [ 1, 1 ], [ 1, 0 ], [ 0, 0 ] ] ]
    }
} );

और फिर आप यह पता लगाने के लिए "प्रतिच्छेदन" क्वेरी का उपयोग कर सकते हैं कि क्या कोई बिंदु प्रत्येक बहुभुज द्वारा कवर किया गया है:

db.so.find( {
    'loc' : {  
        $geoIntersects: { 
            $geometry: { type: 'Point', coordinates: [ 0, 0 ] } 
        } 
    }
} );

जो फिर लौटता है:

{ 
    "_id" : ObjectId("51f24d566775068ab0b786f0"), 
    "name" : "Firestation 1", 
    "loc" : { 
        "type" : "Polygon", 
        "coordinates" : [  [  [  0,  0 ],  [  0,  1 ],  [  1,  1 ],  [  1,  0 ],  [  0,  0 ] ] ] 
    } 
}

यहां उसे फायर स्टेशन मिलता है, क्योंकि 0, 0 बहुभुज के बीच में है। अब चाल निश्चित रूप से बहुभुज बिंदुओं की गणना करने के लिए है जो केंद्र बिंदु से "त्रिज्या" (10 किमी) दूर एक सर्कल बनाते हैं। आप एक वास्तविक वृत्त प्राप्त करने में सक्षम नहीं होंगे, लेकिन एक षट्भुज या अष्टकोण पर्याप्त होना चाहिए। इसके लिए गणित बहुत आसान नहीं है, लेकिन http:// www.movable-type.co.uk/scripts/latlong.html#destPoint जावास्क्रिप्ट में एक उदाहरण है। सर्कल की परिधि के साथ बिंदुओं की गणना करने के लिए बस अपने असर को 0 से 2PI तक 8 चरणों में लूप करें, और उन्हें निर्देशांक में रखें। उन्हें डबल नेस्टेड एरे में एम्बेड करना सुनिश्चित करें और पहले और आखिरी को समान बनाएं:

{
    name: "Firestation 1",
    loc: {
        type: "Polygon",
        coordinates: [ [
            [ point1-lon, point1-lat ], 
            [ point2-lon, point2-lat ], 
            [ point3-lon, point3-lat ], 
            ...
            [ point1-lon, point1-lat ], 
        ] ]
    }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कैसे mongo स्वचालित रूप से node.js सर्वर में पुन:कनेक्ट करने के लिए?

  2. MongoDB LinQ चयन विधि वास्तव में केवल फ़ील्ड का एक सबसेट पुनर्प्राप्त करेगी?

  3. नेवला में समूह (द्वारा)?

  4. समान पंक्तियों को समूहबद्ध करने के लिए पाइमोंगो में समूह का उपयोग कैसे करें?

  5. नेवला में कैसे छाँटें?