ऐसा लगता है कि यह आदेश के साथ है। अगर आप $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 हो सकता है।