Я строю nodejs api, используя mongodb как базу данных для Android-приложения. Когда пользователь Android отправляет свое GPS-положение на задний план, api сортирует все данные на расстоянии от пользователя и отвечает обратно.
Для этого я использую $ geoNear stage в структуре агрегации. Я следовал инструкциям, но я не могу получить данные, только «undefined».
Здесь приведен формат данных JSON от db.
{
userId: "",
description: "",
location: {
type: "Point",
coordinates: [ latitude, longitude ]
},
image: ""
}
И вот мой код geoNear.
db.posts.createIndex({location:"2dsphere"});
db.posts.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [ parseFloat(geoInfo.latitude) , parseFloat(geoInfo.longitude) ] },
distanceField: "distance",
spherical: true
}
},
{ $sort: { distance: 1 } },
{ $limit: 20 }
], function(err, docs) {
if (err) {
callback(err, null);
}
callback(null, docs);
});
Я вижу только неопределенный результат. Теперь я застрял в этом выпуске в течение нескольких дней. Любая помощь очень ценится!
Привет Notionquest, спасибо за любезный ответ. Ваш код, похоже, работает с образцами данных, но когда я привожу его в свою базу данных, он также не работает. –
Произошла ошибка. '' errmsg ":" исключение: команда geoNear не выполнена: {errmsg: \ "exception: поле 'near' должно быть точкой \", код: 17304, ok: 0.0} ",' –
Пожалуйста, укажите точную копию вашего документ (1 или 2 документа). В противном случае было бы сложно отладить вашу проблему. – notionquest