2013-11-23 8 views
5

मैं मोंगोडीबी (2.4.8) में कई बहुभुज डालता हूं, और उम्मीद करता हूं कि पॉलीगॉन एक निर्दिष्ट बिंदु में बैठता है। ऐसा लगता है कि यह एक आम सवाल है। लेकिन Google से सभी दस्तावेज़ पढ़ने के बाद, मुझे परिणाम नहीं मिला। तो इस सवाल को बनाओ।MongoDB कैसे पता लगाएं कि बहुभुज में एक निर्दिष्ट बिंदु है?

उदा।

db.addr_poly.insert(
{ loc : 
    { type : "Polygon" , 
    coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] 
} }) 
db.addr_poly.insert(
{ loc : 
    { type : "Polygon" , 
    coordinates : [ [ [ 0 , 0 ] , [ -3 , -6 ] , [ -6 , -1 ] , [ 0 , 0 ] ] ] 
} }) 

अब प्वाइंट (1,1) वाले बहुभुज को कैसे ढूंढें?

कोई भी मेरी मदद कर सकता है? आपका बहुत बहुत धन्यवाद!

उत्तर

13

$geoIntersects operator का उपयोग करें। यह उन सभी आकृतियों के लिए पूछताछ करता है जो आपके द्वारा पास किए गए जियोजसन ऑब्जेक्ट को छेड़छाड़ करते हैं। जब आप इसे इंगित करते हैं, तो उसे उस बिंदु को शामिल करने वाले सभी आकारों को वापस करना चाहिए। ध्यान रखें कि $ geoIntersects ऑपरेटर केवल 2 डी इंडेक्स के लिए नहीं, 2dsphere अनुक्रमणिका के लिए काम करता है।

+0

यह काम करता है! मुझे खेद है कि मैंने अभी $ geoWithin की कोशिश की। फिलिप, बहुत बहुत धन्यवाद! – fanzhou

+0

@ फ़ानज़ोउ जब यह उत्तर सही था, तो कृपया इसके आगे टिक-आइकन पर क्लिक करके इसे चिह्नित करें। – Philipp

+0

@ फिलिप क्या आप क्वेरी के बारे में अधिक जानकारी दे सकते हैं? मुझे इस क्वेरी के लिए एक उदाहरण चाहिए :) – Emech

2

जैसा कि @ फिलिप ने कहा था, आपको $ geoIntesects ऑपरेटर का उपयोग करना चाहिए। मुझे क्वेरी को समझने का प्रयास करने में सबसे कठिन समय था। मैंने सोचा कि मैं जो दिखता हूं उसे साझा करूंगा और यह किसी को बाद में परेशानी बचा सकता है।

db.addr_poly.find({ 
    loc:{ 
     $geoIntersects: { 
      $geometry: { 
       type: "Point" , 
       coordinates: [1, 1] 
      } 
     } 
    } 
}); 
+0

क्या आप कृपया उदाहरण दे सकते हैं कि मोंगो जावा ड्राइवर का उपयोग करके इसे कैसे किया जाए? या MongoTemplate। धन्यवाद। –

+0

मैं या तो वाक्यविन्यास से परिचित नहीं हूं। माफ़ कीजिये। –

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