2016-10-30 2 views
0

Ich habe ein Dokument in der Datenbank, das eine "Polygon" -Eigenschaft enthält, die, soweit ich weiß, ein gültiges GeoJSON-Objekt ist. Ich möchte die Datenbank mit einem GeoJSON Point-Objekt durchsuchen, um Dokumente zu finden, bei denen das Polygon in der Polygon-Eigenschaft den Point enthält. Dazu verwende ich den $ geoInterectsects-Operator, aber jedes Mal, wenn ich die Suche vorbereite, gibt MongoDB den Fehler zurück: [Fehler: Kann $ geoIntersects nicht verwenden].

Das einzige Objekt in der Datenbank:

{ 
    "_id": ObjectId("581540795fd2da1b188eb09c"), 
    "name":"String", 
    "polygon":{ 
     "coordinates":[ 
      [ -90, -180 ], 
      [ 90, -180 ], 
      [ 90, 180 ], 
      [ -90, 180 ], 
      [ -90, -180 ] 
     ], 
     "_id": ObjectId("581540795fd2da1b188eb09d"), 
     "name": "String", 
     "type": "Polygon" 
    }, 
    "__v":0 
} 

I Mungo die Datenbank durchsuchen verwenden. Die Abfrage, die verwendet wird, um die Suche zu Preform:

{ 
    polygon: { 
     $geoIntersects: { 
      $geometry: { 
       type: 'Point', 
       coordinates: [<long>, <lat>] 
      } 
     } 
    } 
} 

Wenn ich die Breite und Länge auf etwas einfach eingestellt, sagt (0, 0) oder (1, 1). Es gibt den Fehler zurück. Entsprechend dem, was ich an anderer Stelle gelesen habe, ist der einzige Grund, warum dieser Fehler zurückgegeben werden sollte, weil die Dokumente in der Datenbank keine gültigen GeoJSON-Objekte sind, aber ich kann nichts falsches mit dem einzigen Objekt in der Datenbank sehen.

Antwort

0

Ich denke, dass Sie das äußere Array auf Ihren Koordinaten für ein GeoJSON-Polygon fehlt. Ihr Dokument sollte wie folgt aussehen:

{ 
    "_id": ObjectId("581540795fd2da1b188eb09c"), 
    "name":"String", 
    "polygon":{ 
     "coordinates":[[ 
      [ -90, -180 ], 
      [ 90, -180 ], 
      [ 90, 180 ], 
      [ -90, 180 ], 
      [ -90, -180 ] 
     ]], 
     "_id": ObjectId("581540795fd2da1b188eb09d"), 
     "name": "String", 
     "type": "Polygon" 
    }, 
    "__v":0 
} 

Vom GeoJSON spec, http://geojson.org/geojson-spec.html#id4

Coordinates of a Polygon are an array of LinearRing coordinate arrays. The first element in the array represents the exterior ring. Any subsequent elements represent interior rings (or holes).

Verwandte Themen