Я пытаюсь использовать geoNear для возврата документов в мою коллекцию, которые имеют координаты широты и долготы, но не получая никаких результатов, даже если в коллекции есть документы, которые имеют координаты широты и долготы. Я использую mlab для хранения моих данных, например, вот документ в моей коллекции.geoNear не возвращает результатов
var trucker = db.collection('trucker');
{
"_id": {
"$oid": "581e82d00f192a694bb56679"
},
"latitude": 77.0551642746301,
"longitude": 10.825842664395019,
"loc": [
77.0551642746301,
10.825842664395019
],
}
У меня есть координаты двух различных точек зрения, потому что я пытался увидеть, если geoNear бы подобрать место, и возвращает результат, но до сих пор не может найти его. Это, как я использую geoNear в настоящее время, чтобы найти результаты
exports.geoNear = function (lat, lon ,res, next)
{
console.log("Inside geoNear");
var job = {};
job.lon = JSON.parse(lon);
job.lat = JSON.parse(lat);
console.log(job.lon);
console.log(job.lat);
trucker.geoNear([job.lon, job.lat], function(err, success){
if(success) {
res(success);
} else {
console.log('Response error' + err);
}
});
};
app.get('/geoFind', function(req, res) {
AM.geoNear('48.99759239999999', '-123.0683089', function(o){
res.send(200,o);
});
});
Я получаю этот результат при посещении Localhost: 8000/geoFind:
{
"waitedMS": 0,
"results": [],
"stats": {
"nscanned": 0,
"objectsLoaded": 0,
"maxDistance": 0,
"time": 0
},
"ok": 1
}
Теперь, я попробовал много различных способов, таких как следующий, но получить, Response errorMongoError: «ближнее» поле должно быть точечным следующим:
trucker.createIndex({ loc : "2dsphere" })
trucker.geoNear({loc: {type: "Point", coordinates: [job.lon,job.lat]}}, {spherical: true}, function(err, success) {
if(success){
res(success);
} else {
console.log('Response error '+err + job.lon +':' + job.lat);
}
});
Теперь мне интересно, как я могу использовать geoNear вернуть документы широты и долготы коорд ? при изо Нужно ли хранить в базе данных широту и долготу определенным образом? Я попробовал db.command() также с geoNear, и я всегда получаю db.command, это не функция, то же самое с trucker.command или trucker.db.db.command или trucker.db.command (что угодно, с командой для получения данных из база данных, которая, по моему мнению, связана с тем, что я использую mongoose, а не mongoclient, потому что моя база данных настроена с помощью mlab). Ничего из того, что я пробовал, сработало, поэтому я сейчас задаю этот вопрос, поскольку я пробовал практически все, что можно было бы получить, чтобы получить результаты из моей базы данных с помощью geoNear.
MongoDB геопространственных координаты должны быть сохранены как [долго, lat], похоже, что вы делаете [lat, long] - может быть источником проблемы? – pneumee
Да, у меня не было этого формата [long, lat], но я попытался это сделать в какой-то момент и до сих пор не получал никаких результатов. Спасибо за ответ, хотя, потому что он заставил меня провести еще несколько тестов, а затем, после того, как geoNear вернет что-то! –