планировщик вернул ошибку: не удалось найти индекс для запроса $ geoNear Python - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сделать запрос с $ near в python с pymongo,

Я уже создал индекс

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

И если я сделаю запрос, то его:

db.operadores.find(    {
     id: {
     $in:['10335282', '10335539', '10335541', '10476793', '10484737', '10526744', '10552801', '10556323', '10625572', '10759263', '10819053', '10835837', '10842699', '10876588', '10886964', '10892128', '30377476', '70000240', '70000461', '900705728']
     },
     location:
       { $near :    
          {
            $geometry: { type: "Point",  coordinates: [-74.05937569999998, 4.6813047 ] },
            $maxDistance: 5000
          }
       }    }
    ).sort({location:1})

Но в Python, если я сделаю запрос:

data = self.__operators.find({
            'id': {
                '$in': ['10335282', '10335539', '10335541', '10476793', '10484737', '10526744', '10552801', '10556323', '10625572', '10759263', '10819053', '10835837', '10842699', '10876588', '10886964', '10892128', '30377476', '70000240', '70000461', '900705728']
            },
            'location':
                SON([("$near", [-74.05937569999998, 4.6813047 ]), ("$maxDistance", 1000)])

        })

Это покажет мнеИсключение:

 raise OperationFailure(msg % errmsg, code, response)
 pymongo.errors.OperationFailure: error processing query:
 ns=unilever.operadoresTree: $and
     id $in [ "10335282" "10335539" "10335541" "10476793" "10484737" "10526744" "10552801" "10556323" "10625572" "10759263" "10819053"
 "10835837" "10842699" "10876588" "10886964" "10892128" "30377476"
 "70000240" "70000461" "900705728" ]
     GEONEAR  field=location maxdist=1000 isNearSphere=0 Sort: {} Proj: {}  planner returned error: unable to find index for $geoNear query
...