2011-04-04 10 views
3

mongodbでgeoNearを使用するときにフィルタを追加することはできますか?例えば、私は私のレコードは、次のようになり言う:mongodb geoNear +追加のフィルタ?

{ 
_id: {}, 
cid: 1, 
latlon: [ -74.07096147537231, 40.9088747684256 ] 
} 

は、私が「1」に等しい「CID」とのレコードだけことを確認するために、「CID」を渡すことはできますか? geoNearでできない場合は、どうすればいいですか? geoNearを使用しています。距離を返します。

ありがとう!

答えて

10

はい、可能です。いつものようにdb.collection.find - あなたは距離を使用db.runCommandが必要な場合は不要距離ならば、

:更新

db.places.find({ latlon: { $near : [50,50] } }, {cid: 1}) 

:あなたはいつものように近くに$を持つ任意のフィルタを使用することができます。 documentationから

geoNearコマンドは 結果、ならびにトラブルシューティングのためのいくつかの 診断において指定された点から 各アイテムの距離を返す追加 利点を有します。

queryパラメータがdb.runCommandであり、あなたはこのようにそれを使用することができます:

db.runCommand({ geoNear : "latlon" , near : [ 50 , 50 ], num : 10, 
       query : { cid: 1 } }); 
+0

が、私のようなもの使用しています:db.runCommand({geoNear: "LOCS"、近い:[0、 0]、spherical:true、maxDistance:range/earthRadius});私がdb.example.find()を使用する場合。距離はどのように計算されますか? – mike

+0

@mike:私は答えを更新しました。詳細はこちらをご覧ください。 –

+0

昨日投稿した後、この「クエリ:」オプションが見つかりました!しかし、私はそれをヘルプの答えとしてマークします!本当にありがとう! – mike