4

mongodbでgeoNearを使用するときに、フィルターを追加することはできますか?たとえば、私のレコードが次のようになっているとします。

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

「cid」を渡して、「cid」が「1」に等しいレコードのみを確​​認できますか?geoNearでそれが不可能な場合、どうすればよいですか?距離を返すため、geoNearを使用しています...

ありがとう!

4

1 に答える 1

11

はい、それが可能であることを確認してください。通常どおり、$nearで任意のフィルタリングを使用できます。

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

アップデート:

距離が必要な場合は、距離が必要db.runCommandない場合は、db.collection.find通常どおりに使用します。

ドキュメントから:

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

にはqueryパラメータがありdb.runCommand、次のように使用できます。

db.runCommand( { geoNear : "latlon" , near : [ 50 , 50 ], num : 10,
                 query : { cid: 1 } } );
于 2011-04-04T21:05:11.433 に答える