Спасибо за предыдущий расчет. У меня есть координата центра города, который ранее был запрошен: [lon, lat]
. У меня есть еще один параметр в запросе radius
. Я хочу найти все документы в своем db внутри этого виртуального cercle.MongoDB - GeoJSON - Найти документ внутри радиуса
Моя схема:
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]
});
Я пытаюсь запрос так:
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)
Если ориентировать собственный город с радиусом 5 км, я получил ответы с городом, как 200кй или более от того, где Я живу.
Это то, что происходит, когда вы спите только 2 часа из-за кодовой спешки, вы можете слишком быстро прочитать документацию. 2-й блок параметров не километр (я французский кстати, поэтому я не буду использовать имперскую систему;)). Поэтому я должен рассчитать радиан, как этот 'rad/6378.1' – Ragnar