2016-03-29 9 views
-1

現在の緯度/経度座標から10キロメートルと言えば、私はMongooseで文書を読み込もうとしています。Mongooseは緯度経度座標から一定距離の文書を取得します

それでは、私は、このオブジェクトを持っているとしましょう:

{ 
    lat: -33.9493992, 
    lon: 151.1114885 
} 

そして、私のマングースデータベースに私がコレクションを持っているし、このコレクション内のすべての文書はまた、保存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( '/ポイント/:モデルを初期化

緯度/: LON ') に.get(関数(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 
    ] 
} 
+1

ドキュメントをお読みください。 ['$ nearSphere'](https://docs.mongodb.org/manual/reference/operator/query/nearSphere/)。あなたは別個の特性を望まない。ドキュメンテーションは、あなたのドキュメントがどのようにデータを保存するのかを教えてくれます。 –

答えて

0

location: { 
    type: [ Number ], 
    default: [ 0, 0 ], 
    index: '2dsphere' 
} 

その後、あなたは同じように上の検索操作を行うことができますその:

Model.find({ 
    location: { 
    $near: { 
     $maxDistance: 100/111.12, // 100km 
     $geometry: { 
     type: "Point", 
     coordinates: [151.1114885, -33.9493992] // [lon, lat]  
     } 
    } 
    } 
}).exec(callback); 

説明ノート$maxDistance用:

1° latitude = 69.047 miles = 111.12 kilometers

+0

お返事ありがとうございます。 mongoose modelSchemaを使用して、モデルを開始するときに定義されたフィールドを定義する必要がありますか?私はそれをして、結果として "未定義"を得る... –

+0

@ArielWeinberger更新答え –

+0

私は空のオブジェクトを取得、私のスキーマに何かが間違っている必要があります。質問をスキーマ定義で更新します。私は助けていただければ幸いです。ありがとうオレグ。 –

関連する問題