geoNearを使用して、緯度と経度の座標を持つドキュメントをコレクションに返しますが、緯度と経度の座標を持つドキュメントがコレクションに含まれていても結果が得られません。私は私のデータを格納するためにmlabを使用しています。例えば、ここに私のコレクションのドキュメントがあります。geoNear結果が返されない
var trucker = db.collection('trucker');
{
"_id": {
"$oid": "581e82d00f192a694bb56679"
},
"latitude": 77.0551642746301,
"longitude": 10.825842664395019,
"loc": [
77.0551642746301,
10.825842664395019
],
}
私はgeoNear場所をピックアップし、その結果を返しますが、まだそれを見つけることができないだろうかどうかを確認しようとしていたので、私は、2つの異なる方法で座標を持っています。 8000/geoFind:今
{
"waitedMS": 0,
"results": [],
"stats": {
"nscanned": 0,
"objectsLoaded": 0,
"maxDistance": 0,
"time": 0
},
"ok": 1
}
、私のようなさまざまな方法を試してみましたローカルホストを訪れたとき、私は結果
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);
});
});
私はこのような結果を得ていますを見つけるために、現在geoNearを使用していますどのようにこれがあります以下が、取得、レスポンス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);
}
});
さて、私はどのように私は緯度と経度COORDで文書を返すようにgeoNearを使うのですか思ったんだけどinates?緯度と経度は特定の方法でデータベースに格納する必要がありますか?私はgeoNearとdb.command()を試してみました。私はいつもdb.commandを取得しました。これは、trucker.commandまたはtrucker.db.db.commandやtrucker.db.commandと同じです。私のデータベースはmlabで設定されているので、mongocloseではなくmongooseを使用しているためだと思うデータベースです)。私が試したことは何もありませんでした。なぜ私はgeoNearを使用してデータベースから結果を得るために想像できるあらゆる方法で試したので、今この質問をしています。
MongoDBの地理空間座標は、長い[として保存する必要があります
その後、あなたは次のようなあなたの場所の近くのユーザーを見つけるためにgeoNearを使用することができますラット]、あなたが[ラット、ロング]をやっているように見える - 問題の原因になる可能性がありますか? – pneumee
はい、私はそれを持っていませんでした[long、lat]形式ですが、私はこれを一度に試してみましたが、結果は得られませんでした。しかし、答えをありがとう、それは私がいくつかのより多くのテストを行うために持っているし、geoNear最終的に何かを返すことがあります! –