यह अध्याय प्रस्तुत करता है कि MongoDB कैसे भूस्थानिक डेटा को संग्रहित करता है। MongoDB के भूस्थानिक क्वेरी क्षमता का उपयोग करने के लिए, हमें पहले भूस्थानिक डेटा को कैसे संग्रहित करना है, इसे समझना आवश्यक होता है।
भूस्थानिक डेटा मुख्य रूप से बिंदु, रेखाएँ, और ज्यामितीय आकृतियों से बना होता है।
नक्शे पर एक बिंदु अपनी देशान्तर और अक्षांश निर्दिष्ट करता है। कई बिंदु एक रेखा बनाते हैं, और कई रेखाएँ विभिन्न आकारों को बना सकती हैं।
प्रायोगिक अनुप्रयोगों में: दुकान का स्थान, "मैं कहाँ हूँ?", और "स्कूल कहाँ है?" को सभी नक्षांस द्वारा प्रतिष्ठापित किया जा सकता है। एक कैम्पस या एक शॉपिंग मॉल की आकृति का विवरण देने के लिए ज्यामितीय आकृतियों की आवश्यकता होती है।
भूभागीय JSON वस्तु
MongoDB को भूस्थानिक जानकारी को प्रस्तुत करने के लिए भूभागीय JSON वस्तु का उपयोग करता है।
सामान्य भूभागीय JSON प्रकार निम्नलिखित होते हैं:
- बिंदु - एक नक्शे बिंदु को प्रतिष्ठापित करता है
- रेखांक - एक रेखा को प्रतिष्ठापित करता है
- बहुभुज - एक बहुभुज को प्रतिष्ठापित करता है
मोंगोडीबी फील्ड्स में भूभागीय JSON वस्तुओं को संग्रहित करने के लिए प्रारूप निम्नानुसार होता है:
<फ़ील्ड>: { प्रकार: <भू-JSON प्रकार>, संयोजनाएँ: <संयोजनाएँ> }
स्पष्टीकरण:
- <फ़ील्ड> - फ़ील्ड नाम
- प्रकार - भू-JSON प्रकार
- संयोजनाएँ - संयोजनाओं का एक सरणी। विभिन्न भू-JSON प्रकारों के लिए प्रारूप भिन्न होता है।
उदाहरण:
स्थान: {
प्रकार: "बिंदु", // भूस्थानिक डेटा का प्रकार, इस मामले में, यह एक नक्शे बिंदु है
संयोजनाएँ: [-73.856077, 40.848447] // देशान्तर, अक्षांश
}
स्पष्टीकरण: स्थान फ़ील्ड बिंदु प्रकार के भूस्थानिक डेटा को संग्रहित करता है।
देशान्तर बिंदु (बिंदु)
प्रारूप:
{ प्रकार: "बिंदु", संयोजनाएँ: [ देशान्तर, अक्षांश ] }
उदाहरण:
{ प्रकार: "बिंदु", संयोजनाएँ: [ 40, 5 ] }
रेखा (रेखांक)
प्रारूप:
{ प्रकार: "रेखांक", संयोजनाएँ: [ बिंदु1, बिंदु2, ...] }
उदाहरण:
{ प्रकार: "रेखांक", संयोजनाएँ: [ [ 40, 5 ], [ 41, 6 ] ] }
बहुभुज
एक या एक से अधिक रेखाओं से बन सकता है। प्रारूप:
{
प्रकार: "बहुभुज",
संयोजनाएँ: [
रेखा1,
रेखा2,
....
]
}
नोट: प्रत्येक रेखा सेगमेंट के प्रारंभ और अंतिम संयोजन को एक समान रखा जाना चाहिए ताकि एक बंद आकृति बनाई जा सके।
एकल रेखा सेगमेंट से बनी आकृति
{
प्रकार: "बहुभुज",
संयोजनाएँ: [
[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] // रेखा सेगमेंट के संयोजनाएँ, ध्यान दें कि पहली और आखिरी संयोजन समान होते हैं।
]
}
एक से अधिक रेखा सेगमेंटों से बनी आकृति
{
प्रकार : "बहुभुज",
संयोजनाएँ : [
[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], // रेखा सेगमेंट 1
[ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ] // रेखा सेगमेंट 2
]
}
भूस्थानिक सूचक
MongoDB भूभागीय JSON डेटा के क्वेरी को तेज़ करने के लिए दो प्रकार के भूस्थानिक सूचकों का समर्थन करता है।
2dsphere
यह एक गोलाकार ज्यामितीय सूची प्रकार है, जिसका अर्थ है कि दो बिंदुओं के बीच दूरी की गणना करते समय, 2dsphere पृथ्वी को एक गोला मानता है।
2dsphere सूचक बनाने का उदाहरण:
db.collection.createIndex( { location : "2dsphere" } )
विभाग क्षेत्र के लिए एक सूची बनाता है।
2D
2डी यह एक आवलोकनीय ज्यामितीय प्रकार है जो दो बिंदुओं के बीच दूरी की गणना करने के लिए प्लेन मानता है। 2D सूचक बनाने की उदाहरण:
db.collection.createIndex( { location : "2d" } )
विभाग क्षेत्र के लिए एक सूची बनाता है।
भूस्थानिक क्वेरी प्रकार
भूस्थानिक क्वेरी ज्यामितीय गणनाओं से संबंधित सभी होते हैं। निम्नलिखित हैं मोंगोडीबी द्वारा समर्थित क्वेरी प्रकार:
- $geoIntersects - एक विशेष ज्यामितीय आकृति के परस्पर संघनन करने वाली दस्तावेज़ों को मिलाने के लिए उपयोग किया जाता है।
- $geoWithin - एक निर्दिष्ट ज्यामितीय क्षेत्र में समाहित दस्तावेज़ों को मिलाने के लिए प्रयोग किया जाता है।
- $near - सामान्य रूप से एक निर्दिष्ट नक्शांस के निकटतम दस्तावेज़ों के लिए क्वेरी करने के लिए प्रयोग किया जाता है।
नोट: अधिक जानकारी के लिए भूस्थानिक क्वेरी पर, कृपया निम्नलिखित अध्यायों को देखें।