Sto cercando di utilizzare alcune funzionalità di geolocalizzazione in mongodb. L'utilizzo di una query di ricerca con $ near non sembra funzionare!
Al momento ho questo oggetto nel mio database:
{
"Username": "Deano",
"_id": {
"$oid": "533f0b722ad3a8d39b6213c3"
},
"location": {
"type": "Point",
"coordinates": [
51.50998,
-0.1337
]
}
}
Ho il seguente indice impostato così:
{
"v": 1,
"key": {
"location": "2dsphere"
},
"ns": "heroku_app23672911.catchmerequests",
"name": "location_2dsphere",
"background": true
}
Quando faccio funzionare questa domanda:
db.collectionname.find({ "location" : { $near : [50.0 , -0.1330] , $maxDistance : 10000 }})
Ho ricevuto questo errore:
error: {
"$err" : "can't parse query (2dsphere): { $near: [ 50.0, -0.133 ], $maxDistance: 10000.0 }",
"code" : 16535
}
Qualcuno sa dove sto andando male? Qualsiasi aiuto sarebbe molto apprezzato!
Ehi, in realtà sto cercando di cercare la prima posizione più vicina, indipendentemente da maxDistance. Funziona ma ci vogliono 4 secondi, è molto lento. C'è un modo per aumentare le prestazioni? – John
@ John. Non so dalle informazioni che hai fornito, ma uscire da maxDistance significa cercare l'intero db, che a seconda delle dimensioni potrebbe richiedere molto tempo. –
'$ nearSphere' restituisce dal più vicino al più lontano a destra? Quindi sto usando limit(). La mia posizione nel mio database è la seguente: '[-5.95001220703125,46.149993896484375]' così quando invio '[-5, -46]' questo richiederà 2 - 3 secondi. Ma se invio questa posizione, E.g '[-5.953801, 46.001843]' questo è veramente veloce. Ottengo il risultato solo in '22ms'. Quindi è normale? – John