2013-03-07 6 views
21

अनुसार MongoDB में स्टोर करने के लिए और व्यवस्था हमेशा होना चाहिए देशांतर अक्षांश।कैसे भू-स्थानिक जानकारी यदि आप एक दस्तावेज़ क्षेत्र में भू-स्थानिक जानकारी संग्रहीत करना चाहते हैं, आपके पास दो विकल्प, एक सरणी या किसी एम्बेडेड दस्तावेज़ है, MongoDB प्रलेखन (<a href="http://docs.mongodb.org/manual/core/geospatial-indexes/">link</a>) को

यदि मैं एक एम्बेडेड दस्तावेज़ का उपयोग करना चाहता हूं, तो मैं फ़ील्ड के आदेश को कैसे सुनिश्चित कर सकता हूं?

या एम्बेडेड दस्तावेज़ में फ़ील्ड का एक विशिष्ट नाम होना चाहिए?

उत्तर

24

एम्बेडेड दस्तावेज़ में फ़ील्ड के नाम के बावजूद एम्बेडेड दस्तावेज़ के साथ, पहले फ़ील्ड में देशांतर मान होना चाहिए और दूसरे फ़ील्ड में अक्षांश मान होना चाहिए। उदाहरण के लिए:

db.zips2.insert({ _id: 1, city: "b", loc: { x: -73.974, y: 40.764 } }) 
db.zips2.insert({ _id: 2, city: "b", loc: { x: -73.981, y: 40.768 } }) 

यहाँ एक्स क्षेत्र देशांतर हो सकता है; और वाई फ़ील्ड अक्षांश होगा।

सादर

+4

'सरणी के मूल्यों या तो सरणियों हो सकता है, के रूप में [55.5, 42.3], या एम्बेडेड दस्तावेजों, {एलएनजी: 55.5, अक्षां: 42.3} में के रूप में .' - http://docs.mongodb.org/manual/core/geospatial-indexes/#store-location-data – Loren

29

2D Geospatial Index, Store Location Data

"सभी दस्तावेज एक ही क्रम में स्थान डेटा को संग्रहीत करना चाहिए। आप अपने समन्वय प्रणाली के रूप में अक्षांश और देशांतर का उपयोग करते हैं, हमेशा पहला देशांतर। MongoDB के 2 डी गोलाकार सूचकांक ऑपरेटरों केवल स्टोर [देशांतर, अक्षांश] आदेश को पहचानें। "

Here's a good post about Geospatial Queries in MongoDB यदि आपको इसकी आवश्यकता हो।

+0

यह सिर्फ मुझे एक घंटे के सिरदर्द से बचाया। मैं एक ट्यूटोरियल के साथ पीछा कर रहा था और उन्होंने जानकारी की इस जानकारी को छोड़ दिया। Mongo सुनिश्चित करने के दौरान एक त्रुटि फेंक रखा इंडेक्स: "ऑब्जेक्ट से भौगोलिक कुंजी निकालने, विकृत ज्यामिति नहीं निकाला जा सकता है?" –

3

मैं आपको सलाह देता हूं कि आप अपने क्षेत्र का नाम दें: x and y, longitude/latitude के बजाय, क्योंकि अद्यतन के बाद, देशांतर और अक्षांश वर्णानुक्रम में पुन: व्यवस्थित किया जाएगा, इसलिए उलटा हुआ।

1

ये अनुक्रमणिका हमें स्थान के आधार पर चीजों को खोजने की अनुमति देती हैं। 2 डी & 3 डी 2 डी में, हम x & y निर्देशांक के साथ एक कार्तीय विमान और विभिन्न वस्तुओं का एक समूह है: हम 2 विकल्प है।

2D cartesian plane

दस्तावेज़ x किसी प्रकार का, ensureIndex({'location':'2d', 'type':1}) साथ y स्थान संग्रहीत करना होगा। प्रकार विकल्प इंडेक्स की दिशा निर्दिष्ट करता है यानी आरोही या अवरोही (और यह वैकल्पिक है)। यह एक यौगिक सूचकांक हो सकता है। निकटतम स्थानों को खोजने के लिए कमांड db.collectionName.find({location: {$near:[x,y]}}) का उपयोग करें। और व्यावहारिक रूप से बोलते हुए, जिस तरह से इसका अक्सर उपयोग किया जाता है वह limit के माध्यम से होता है। परिणामों को सीमित करने के लिए 20 को .limit(20) संलग्न करें।

एक क्षेत्र नामित निर्देशांक है कि वस्तु के निर्देशांक निर्दिष्ट करता है:

+8

भयानक mspaint कौशल –

0

MongoDB प्रलेखन निम्नलिखित कहा। अक्षांश और देशांतर निर्देशांक निर्दिष्ट करने के लिए, सूची पहला देशांतर और तो अक्षांश:

मान्य देशांतर मान -180 और 180, दोनों समावेशी के बीच हैं। वैध अक्षांश मान -90 और 9 0 (दोनों समावेशी) के बीच हैं।

Oficial MongoDB प्रलेखन: https://docs.mongodb.com/manual/geospatial-queries/#geospatial-indexes

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