2012-03-15 3 views
2

2次元空間内の複数の点の近接度に基づいて結果を並べ替える必要があります。MongoDB geoNear複数座標

これは、最初のポイントに対してクエリを実行し、2番目のポイントに対してこれらの結果を再クエリ/チェックすることによって行われると仮定します。

以下のコードは、私が少し上手くいくために何をしようとしているのかを説明していますか?

db.runCommand({ 
    geoNear:"places", 
    near:[ [52.5243, 13.4063], [48.1448, 11.5580] ] 
}) 

ソリューション:包みなさい、誰もが興味を持っている、これは私がこれを達成する方法(以下の答えのおかげで)である

a = Trip.geo_near([52.5243, 13.4063], :max_distance => 40, :unit => :mi).uniq 
b = Trip.geo_near([48.1448, 11.5580], :max_distance => 40, :unit => :mi).uniq 
@results = a & b 

答えて

1

あなたが返すように上記のクエリを何を意図していますか? 1つまたは他の場所に近い場所?その場合は、2つのクエリを実行し、その結果をアプリケーションコードで結合する必要があります。

+0

もちろんです!どのように私はそれを見落としたか分からない、ありがとう。 – johnrees

2

MongoDBには、Geospace Indexingに関するドキュメントのセクションがあります。 http://www.mongodb.org/display/DOCS/Geospatial+Indexing

私はあなたが探しているものはバウンディングボックスのクエリだと思います。これはコード例から直接得られたものです。

box = [[40.73083, -73.99756], [40.741404, -73.988135]] 
db.places.find({"loc" : {"$within" : {"$box" : box}}}) 
関連する問題