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

क्वेरी पैरामीटर काम नहीं कर रहे हैं के रूप में नेवला GeoJSON बिंदुओं के साथ geoNear को कॉल करता है

समस्या गलत तरीके से maxDistance का उपयोग कर रही थी। निम्नलिखित अभिव्यक्ति ने काम किया।


Branch.geoNear({type: "Point", coordinates: [0.0776590, -33.7797590]}, {
  spherical: true, 
  maxDistance: 1 / 6378137, 
  distanceMultiplier: 6378137
})
  .then(function (doc) {
    console.log(doc);
    process.exit();
  });


Mongoose: branches.ensureIndex({ location: '2dsphere' }) { safe: undefined, background: true }  
Mongoose: branches.geoNear(0.077659) -33.779759 { distanceMultiplier: 6378137, lean: true, maxDistance: 1.567855942887398e-7, spherical: true } 
[]

अब क्वेरी सही ढंग से पता लगाती है कि संग्रह में दो दस्तावेज़ क्वेरी किए गए स्थान के 1 मीटर के भीतर नहीं हैं। घर के नजदीक किसी स्थान की खोज करने से हमें अपेक्षित परिणाम भी मिलते हैं।


Branch.geoNear({type: "Point", coordinates: [153.027117, -27.468515]}, {
  spherical: true, 
  maxDistance: 1 / 6378137, 
  distanceMultiplier: 6378137
})
  .then(function (doc) {
    console.log(doc);
    process.exit();
  });

Mongoose: branches.ensureIndex({ location: '2dsphere' }) { safe: undefined, background: true }  
Mongoose: branches.geoNear(153.027117) -27.468515 { distanceMultiplier: 6378137, lean: true, maxDistance: 1.567855942887398e-7, spherical: true } 
[ { dis: 0.0026823704060803567,
    obj: 
     { name: 'A',
       _id: 533200e49ba06bec37c0cc22,
       location: [Object],
       __v: 0 } } ]

समाधान?

जियोनियर के MongoDb प्रलेखन में कहा गया है कि यदि जियोसन ऑब्जेक्ट का उपयोग करना है तो मैक्सडिस्टेंस मीटर में होना चाहिए, और रेडियन में समन्वय जोड़े का उपयोग करना चाहिए।

यह या तो गलत है, या इसके बारे में मेरी समझ गलत है।

जैसा कि आप ऊपर देख सकते हैं, मैक्सडिस्टेंस के लिए 1 मीटर निर्दिष्ट करने के बजाय, इसकी आपूर्ति रेडियन में की जाती है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मोंगोडीबी को प्रक्रिया में होस्ट किया जा सकता है?

  2. MongoDB में किसी अन्य नंबर फ़ील्ड का उपयोग करके किसी संख्या फ़ील्ड को कैसे अपडेट करें?

  3. मोंगोइड:आईडी के सरणी के माध्यम से खोजें

  4. प्रत्येक दस्तावेज़ में अतिरिक्त फ़ील्ड के साथ एक प्रतिक्रियाशील प्रकाशन बनाएँ

  5. नेवला के साथ दो क्षेत्रों को कैसे छाँटें?