J'essaie d'obtenir des résultats de ma collection d'endroits qui sont proches d'une coordonnée. Pour ce faire, j'utilise un index 2d sur un attribut location.position qui possède un attribut lng et lat.
Le problème est que chaque coordonnée que je mets, elle renvoie les mêmes 60 résultats (la collection entière).
Les documents de ma collection sont tous proches de mes coordonnées GPS et, cependant, si je mets une coordonnée 0.0, 0.0 ou toute autre paire, elle revient toujours la même.
En fait, la requête retourne exactement la même chose si j'utilise un find vide().
L'index semble être créé correctement car il ne renvoie aucune erreur.
Un objet dans ma collection est comme ceci:
{ "_id" : "80293840923...",
"name": "myname",
"location" : {
"position" : { "lng": -196988, "lat": 43.30594 }
"address": "example",
"city": "example" }
}
L'indice est créé comme ceci:
places_collection.ensureIndex({"location.position": "2d"}, {name: "index2dLocation"}, function(error, indexName){
callback("", "Indice creado: " + indexName)
});
La recherche serait comme ceci:
places_collection.find(
{ "location.position" : { $near : [ parseFloat(-123.98) , parseFloat(162.342) ] } }
).toArray(function(error, results) {
if(error){ callback(error, "")
}else{ console.log(results.length); callback(null, results); }
});
Et enfin , comme dit précédemment, ma recherche retourne toujours le même résultat. Cela ne me dérange pas si je mets une coordonnée ou une autre. Même cela ne me dérange pas si je fais une recherche vide().
Toute aide ici s'il vous plaît? Je ne sais pas comment le faire fonctionner.
Merci beaucoup.