2013-11-23 7 views
5

Ich füge viele Polygone in MongoDB (2.4.8) ein und hoffe, das Polygon zu finden, an dem ein bestimmter Punkt sitzt. Es scheint eine häufige Frage zu sein. Aber nachdem ich alle Dokumente von Google gelesen habe, habe ich das Ergebnis nicht erhalten. Erstellen Sie diese Frage.MongoDB Wie finde ich heraus, welches Polygon einen bestimmten Punkt enthält?

z.B.

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 ] ] ] 
} }) 

Jetzt wie finden Sie das Polygon, das Point (1,1) enthält?

Jeder kann mir helfen? Danke vielmals!

Antwort

13

Verwenden Sie die $geoIntersects operator. Es fragt nach allen Formen, die das GeoJSON-Objekt schneiden, das Sie passieren. Wenn Sie einen Punkt an ihn übergeben, sollte er alle Formen zurückgeben, die diesen Punkt enthalten. Beachten Sie, dass der Operator $ geoInterectsects nur für 2Dsphere-Indizes und nicht für 2D-Indizes funktioniert.

+0

Es funktioniert! Es tut mir leid, dass ich gerade $ geoWithin probiert habe. Philipp, vielen Dank! – fanzhou

+0

@fanzhou Wenn diese Antwort richtig war, markieren Sie sie bitte als solche, indem Sie auf das Häkchen daneben klicken. – Philipp

+0

@Philipp können Sie mehr über die Abfrage erklären? Ich brauche ein Beispiel für diese Abfrage :) – Emech

2

Wie @philipp sagte, sollten Sie den Operator $ geoInteescts verwenden. Ich hatte die schwierigste Zeit, die Abfrage herauszufinden. Ich dachte, ich würde teilen, was es aussieht, und es könnte später jemand die Schwierigkeiten sparen.

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

Könnten Sie bitte ein Beispiel geben, wie Sie dies mit Mongo Java Driver tun? oder MongoTemplate. Vielen Dank. –

+0

Ich bin nicht mit der Syntax für beide vertraut. Es tut uns leid. –

Verwandte Themen