Merci à un calcul précédent, j'ai la coordonnée du centre d'une ville qui a été question précédemment: [lon, lat]
. J'ai un autre paramètre dans la requête radius
. Je veux trouver tous les documents dans mon db à l'intérieur de ce cercle virtuel.MongoDB - GeoJSON - Trouver un document dans un rayon
Mon schéma:
const artisanSchema = new Schema ({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
name: { type: String, index: true },
address: {
street: String,
zip: { type: String, index: true },
town: { type: String, index: true }
},
contact: {
tel: String,
mail: String,
web: String
},
activities: [String],
type: String,
geometry: mongoose.Schema.Types.Point, //"geometry": {"coordinates":[0.704378,45.194518],"type": "Point"
}
tagMetier: [Number]
});
J'essaie une requête comme ceci:
Artisan.
find ({
'tagMetier': tag,
'geometry': { $geoWithin: { $centerSphere: [ [ myTown.longitude, myTown.latitude ], rad ] } }
},
function (err, artisan) {
if (err) throw err;
else {
res.send(artisan);
}
})
.limit(10)
Si je cible ma propre ville avec un rayon de 5 km Je suis arrivé réponses avec ville comme 200 km ou plus d'où J'habite.
C'est ce qui se passe quand vous ne dormez que 2 heures à cause d'une ruée vers le codage, vous pouvez lire trop vite la documentation. L'unité de 2ème paramètre n'est pas kilométrique (je suis français btw, donc je ne vais pas utiliser le système impérial;)). Donc je dois calculer le radian comme ceci 'rad/6378.1' – Ragnar