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

mongodb जाँच करें कि क्या बिंदु बहुभुज में है

ऐसा लगता है कि यह आदेश के साथ है। अगर आप $geoWithin . का इस्तेमाल कर रहे हैं और आप बहुभुज के अंदर बिंदु खोजने की कोशिश कर रहे हैं, जो चीज भीतर है वह वह क्षेत्र है जिसे आप खोज रहे हैं। हालांकि, $geoIntersects किसी भी दिशा में काम करता है, इसलिए आप पॉलीगॉन के अंदर के पॉइंट या पॉइंट वाले पॉलीगॉन की खोज कर सकते हैं, जैसे:

db.geom.insert({
  "polygons": {
    "type":"Polygon",
    "coordinates": [[
      [ 17.60083012593064, 78.18557739257812],
      [ 17.16834652544664, 78.19381713867188],
      [ 17.17490690610013, 78.739013671875],
      [ 17.613919673106714, 78.73489379882812],
      [ 17.60083012593064, 78.18557739257812]
    ]]
  }
});

db.geom.find({
  polygons: {
    $geoIntersects: {
      $geometry: {
        "type": "Point",
        "coordinates": [17.3734, 78.4738]
      }
    }
  }
});

साथ ही, ध्यान दें कि, आपको अंत में बहुभुज के पहले बिंदु को दोहराना होगा। यदि आप अंतिम जोड़ी को हटाते हैं, तो आपको एक $err मिलेगा :

<ब्लॉकक्वॉट>

क्वेरी को कैननिकलाइज़ नहीं किया जा सकता:BadValue bad geo query" त्रुटि।

ऐसा लगता है कि MongoDB आपको अमान्य ज्यामिति सम्मिलित करने की अनुमति देता है और केवल तभी शिकायत करता है जब आप कोशिश करते हैं और एक 2dsphere अनुक्रमणिका जोड़ते हैं या एक प्रतिच्छेदन/भीतर/पास क्वेरी करते हैं, जो मुझे लगता है कि उचित है, क्योंकि GeoJSON एक वैध ज्यामिति के बिना वैध JSON हो सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB संग्रह में परिवर्तन कैसे सुनें?

  2. मोंगो डीबी एक प्रमुख क्षेत्र के आधार पर उच्चतम मूल्य वाले सभी रिकॉर्ड ढूंढता है

  3. MongoDB $toLower

  4. NoSQL (MongoDB) बनाम Lucene (या Solr) आपके डेटाबेस के रूप में

  5. Azure पर उच्च प्रदर्शन MongoDB क्लस्टर