2013-11-23 8 views
5

MongoDB(2.4.8)に多くのポリゴンを挿入し、指定されたPointが入っているポリゴンが見つかることを期待します。よくある質問です。しかし、Googleからすべてのドキュメントを読んだ後、結果は得られませんでした。だからこの質問を作成してください。MongoDB指定されたポイントを含むポリゴンを見つける方法は?

db.addr_poly.insert(
{ loc : 
    { type : "Polygon" , 
    coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] 
} }) 
db.addr_poly.insert(
{ loc : 
    { type : "Polygon" , 
    coordinates : [ [ [ 0 , 0 ] , [ -3 , -6 ] , [ -6 , -1 ] , [ 0 , 0 ] ] ] 
} }) 

ここで、Point(1,1)を含むポリゴンを見つける方法を教えてください。

誰かが私を助けることができますか?どうもありがとう!

答えて

13

$geoIntersects operatorを使用してください。渡すGeoJSONオブジェクトと交差するすべての図形を照会します。ポイントを渡すと、そのポイントを含むすべてのシェイプが返されます。 $ geoIntersects演算子は2dsphereインデックスでのみ動作し、2dインデックスでは動作しないことに注意してください。

+0

すみません、$ geoWithinを試しました。フィリップ、本当にありがとう! – fanzhou

+0

@fanzhouこの回答が正しいときは、その横にあるティックアイコンをクリックして、このマークを付けてください。 – Philipp

+0

@Philippあなたはクエリーについて詳しく知ることができますか?私はこのクエリの例が必要です:) – Emech

2

@philippによると、$ geoIntesects演算子を使用する必要があります。私は質問を理解しようとしている最悪の時間を持っていた。私はそれが見えるものを分かち合うと思ったが、それは後で誰かにトラブルを救うかもしれない。

db.addr_poly.find({ 
    loc:{ 
     $geoIntersects: { 
      $geometry: { 
       type: "Point" , 
       coordinates: [1, 1] 
      } 
     } 
    } 
}); 
+0

Mongo Java Driverを使ってこれを行う方法の例を教えてください。またはMongoTemplate。ありがとう。 –

+0

どちらかの構文に慣れていません。ごめんなさい。 –

関連する問題