2016-06-30 3 views
0

緯度/経度に最も近いアイテムを見つけるのは難しいです。MongoDBと座標の最も近いentiresを探す

"address": "some_address", 
    "city": "some_city", 
    "coordinates": [ 
     32.214048, 
     -84.361727 
    ] 

これは私がそれを使用する場合、私は、戻っていなくても、空の配列を全く結果を得るていない、私が現在使用しているクエリです:

私のオブジェクトは、緯度/経度のような保存されています。私は、最も近いものを見つけるために私のオブジェクトを照会するにはどうすればよい

collection.find({coordinates: {$near: [40.296898, -111.694647] }, $maxDistance:100})

答えて

4

主なものは3つあります。

  1. [経度、緯度]の順に座標を保存する必要があります。これは、docsのようにmongoが要求します。

  2. だから、あなたのデータは

    {: "some_address"、 "都市": "some_city"、 "座標" [ -84.361727、 32.214048 ] "アドレス"}のようになります

    データを正しく設定したら、geoNearを操作するには2dsphereインデックスを作成する必要があります。

    db.collection.createIndex({座標: "2dsphere"})

  3. 次に、あなたがあなたのクエリを修正する必要があります。 { $ nearSphere::{ ここでは、我々は[経度、緯度]

    db.collection.find({ 座標の前に言ったために、あなたの座標を置く場所つまり、幾何学的特性と$ nearSphereを渡す必要があります$ジオメトリ:{ タイプ: "ポイント"、 座標:[-84.361727、32.214048] }、 $ maxDistance:100 } } })

+0

はどこまでそれぞれに指示する方法はあります指定されたpoinからのエントリですt?それともgeoNear()でのみ提供されていますか? – Clip

+0

さて、私はgeoでも入手できると思います。しかし、それを達成する方法には2つの方法があります。集約フレームワークの使用https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/またはgeoNearコマンドhttps://docs.mongodb.com/manual/reference/command/geoNear/ – Roger

関連する問題