Я пытаюсь загрузить документ в Mongoose, если он находится, скажем, в 10 километрах от текущей координаты широты/долготы.
Итак, скажем, у меня есть этот объект:
{
lat: -33.9493992,
lon: 151.1114885
}
И в моей базе данных Mongoose у меня есть коллекция, и каждый документ в этой коллекции также имеет ключи сохранения lat-lon. Как я могу получить записи только на определенном расстоянии от заданной координаты?
Так, например, я хочу получить только те документы, которые находятся на расстоянии до 10 километров от указанной выше координаты.
Буду признателен за любую помощь.
EDIT: Мой код:
Инициализация модели:
var schema = new mongoose.Schema({
title: String,
title: String,
coordinates: {
type: [ Number ],
default: [0, 0],
index: '2dsphere'
}
});
global.models.Point = mongoose.model('Point', schema);
И код, пытающийся найти в модели: router.route('/points/:lat/:lon') .get(function (req, res) { console.log('lat: ' + req.params.lat + ' lon:' + req.params.lon);
global.models.Point.find({
coordinates: {
$near: {
$maxDistance: 100 / 111.12,
$geometry: {
type: 'Point',
coordinates: [req.params.lon, req.params.lat]
}
}
}
}, function (err, res) {
if (err) {
return console.log(err);
}
console.log(res);
});
});
Объект в том виде, в котором он хранится в коллекции базы данных:
{
"_id" : ObjectId("56ea103eefedec96b6d4b203"),
"title" : "Some title",
"coordinates" : [
5.2260167,
52.3500607
]
}
$nearSphere
. Вам не нужны отдельные свойства. Документация расскажет вам, как ваш документ должен хранить данные. - person Blakes Seven   schedule 29.03.2016