जैसा कि त्रुटि संदेश इंगित करता है, ऐसा इसलिए है क्योंकि आपके पास एक से अधिक 2dsphere
हैं अनुक्रमणिका, इसलिए $geoNear
पता नहीं किसका उपयोग करना है।
इस स्थिति में, आप या तो कर सकते हैं:
- दूसरा जियो इंडेक्स छोड़ें, या
key
का उपयोग करें पैरामीटर जैसा कि $geoNear दस्तावेज़ में बताया गया है :
डॉक्स में भी त्रुटि का उल्लेख किया गया है:
आप db.collection.getIndexes() का उपयोग कर सकते हैं संग्रह पर परिभाषित सभी अनुक्रमितों को सूचीबद्ध करने के लिए।
यहां key
का उपयोग करने का एक उदाहरण दिया गया है पैरामीटर:
> db.test.insert([
{_id:0, loc1:{type:'Point',coordinates:[1,1]}, loc2:{type:'Point',coordinates:[2,2]}},
{_id:1, loc1:{type:'Point',coordinates:[2,2]}, loc2:{type:'Point',coordinates:[1,1]}}
])
फिर मैं दो 2dsphere
. बनाता हूं इंडेक्स:
> db.test.createIndex({loc1:'2dsphere'})
> db.test.createIndex({loc2:'2dsphere'})
चल रहा है $geoNear
key
निर्दिष्ट किए बिना त्रुटि आउटपुट करेगा:
> db.test.aggregate({$geoNear:{near:{type:'Point',coordinates:[0,0]},distanceField:'d'}})
...
"errmsg": "more than one 2dsphere index, not sure which to run geoNear on",
...
key: loc1
. का उपयोग करना परिणाम को loc1
. के अनुसार क्रमबद्ध करेगा अनुक्रमणिका (_id: 0
_id: 1
. से पहले आता है ):
> db.test.aggregate(
{$geoNear: {
near: {type: 'Point',coordinates: [0,0]},
distanceField: 'd',
key: 'loc1'}})
{ "_id": 0, "loc1": { "type": "Point", "coordinates": [ 1, 1 ] }, "loc2": { "type": "Point", "coordinates": [ 2, 2 ] }, "d": 157424.6238723255 }
{ "_id": 1, "loc1": { "type": "Point", "coordinates": [ 2, 2 ] }, "loc2": { "type": "Point", "coordinates": [ 1, 1 ] }, "d": 314825.2636028646 }
और, key: loc2
. का उपयोग करके परिणाम को loc2
. के अनुसार क्रमबद्ध करेगा अनुक्रमणिका (_id: 1
_id: 0
. से पहले आता है ):
> db.test.aggregate(
{$geoNear: {
near: {type: 'Point',coordinates: [0,0]},
distanceField: 'd',
key: 'loc2'}})
{ "_id": 1, "loc1": { "type": "Point", "coordinates": [ 2, 2 ] }, "loc2": { "type": "Point", "coordinates": [ 1, 1 ] }, "d": 157424.6238723255 }
{ "_id": 0, "loc1": { "type": "Point", "coordinates": [ 1, 1 ] }, "loc2": { "type": "Point", "coordinates": [ 2, 2 ] }, "d": 314825.2636028646 }