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

एक से अधिक 2dsphere अनुक्रमणिका, सुनिश्चित नहीं है कि कौन-सा geoNear चलाना है

जैसा कि त्रुटि संदेश इंगित करता है, ऐसा इसलिए है क्योंकि आपके पास एक से अधिक 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 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो संग्रह को JSON प्रारूप में डंप करें

  2. उल्का उत्पादन डेटाबेस तक पहुंचना

  3. Node.js और MongoDB, DB ऑब्जेक्ट का पुन:उपयोग करना

  4. नोड.जेएस में मौजूदा जेसन ऑब्जेक्ट में एक नई विशेषता जोड़ें

  5. नेवला अद्यतन:$inc upsert में काम नहीं कर रहा है