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

2dsphere इंडेक्स बनाते समय MongoDB में "देशांतर/अक्षांश सीमा से बाहर है" को ठीक करें

यदि आपको MongoDB में 2dsphere अनुक्रमणिका बनाने का प्रयास करते समय "देशांतर/अक्षांश सीमा से बाहर है" त्रुटि मिल रही है, तो यह आपके देशांतर और अक्षांश निर्देशांकों के गलत क्रम में होने के कारण हो सकता है।

जब आप एक GeoJSON ऑब्जेक्ट बनाते हैं, तो आपको पहले देशांतर और फिर अक्षांश सूचीबद्ध करना होगा।

  • वैध ​​देशांतर मान -180 between के बीच हैं और 180 , दोनों समावेशी।
  • मान्य अक्षांश मान -90 . के बीच हैं और 90 , दोनों समावेशी।

इसलिए, यदि आपको "देशांतर/अक्षांश सीमा से बाहर है" त्रुटि मिल रही है, तो अपने दस्तावेज़ों की जांच करके देखें कि अक्षांश और देशांतर निर्देशांक किस क्रम में हैं।

त्रुटि का उदाहरण

यहां bars नामक संग्रह का एक उदाहरण दिया गया है जिसमें निर्देशांक वाले दस्तावेज़ गलत क्रम में हों।

{
	"_id" : 1,
	"name" : "Boardwalk Social",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.919297718553366,
			145.77675259719823
		]
	}
}
{
	"_id" : 2,
	"name" : "The Downunder Bar",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.92107838010542,
			145.77621640842125
		]
	}
}

यदि हम location . पर 2dsphere अनुक्रमणिका बनाने का प्रयास करते हैं फ़ील्ड, हमें एक त्रुटि मिलेगी।

उदाहरण:

db.bars.createIndex( 
    { location : "2dsphere" }
)

परिणाम:

{
	"ok" : 0,
	"errmsg" : "Index build failed: 2bb26869-1dec-4484-b554-3ba55fc0c0de: Collection krankykranes.bars ( e1a99ee2-b77c-41a4-b833-25c4b3c599c3 ) :: caused by :: Can't extract geo keys: { _id: 1.0, name: \"Boardwalk Social\", location: { type: \"Point\", coordinates: [ -16.91929771855337, 145.7767525971982 ] } }  longitude/latitude is out of bounds, lng: -16.9193 lat: 145.777",
	"code" : 16755,
	"codeName" : "Location16755"
}

सही कोऑर्डिनेट ऑर्डर के साथ उदाहरण

सही क्रम में निर्देशांकों को छोड़कर, यहाँ फिर से संग्रह है:

{
	"_id" : 1,
	"name" : "Boardwalk Social",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			145.77675259719823,
			-16.919297718553366
		]
	}
}
{
	"_id" : 2,
	"name" : "The Downunder Bar",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			145.77621640842125,
			-16.92107838010542
		]
	}
}

अब location . पर एक 2dsphere अनुक्रमणिका बनाते हैं फ़ील्ड:

db.bars.createIndex( 
    { location : "2dsphere" }
)

परिणाम:

{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}

इसका मतलब है कि इसे बनाया गया था।

हम इसे getIndexes() . से जांच सकते हैं विधि:

db.bars.getIndexes()

परिणाम:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"location" : "2dsphere"
		},
		"name" : "location_2dsphere",
		"2dsphereIndexVersion" : 3
	}
]

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नए क्षेत्र में एक सरणी में पहला आइटम प्रोजेक्ट करें (मोंगोडीबी एकत्रीकरण)

  2. नेवला आबादी एम्बेडेड

  3. स्थानीय मोंगो डीबी शुरू/लॉन्च करने में असमर्थ

  4. ऑब्जेक्ट आईडी पर एक सरणी में $ लुकअप

  5. MongoDB और Mongoose के बीच अंतर