2016-10-30 14 views
0

私はできる限り、有効なGeoJSONオブジェクトである "ポリゴン"プロパティを含むドキュメントをデータベースに持っています。 GeoJSON Pointオブジェクトを使用してデータベースを検索して、ポリゴンプロパティのポリゴンにポイントが含まれているドキュメントを探したいとします。これを行うには、私は$ geoIntersects演算子を使用していますが、findを実行するたびに、MongoDBはエラーを返します:[エラー:$ geoIntersectsを使用できません]。

、データベース内のオブジェクトのみ:

{ 
    "_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 
} 

私は、データベースを検索するためのマングースを使用しています。検索をプリフォームするために使用されるクエリ:私はシンプルなものに緯度と経度を設定した場合

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

、(0,0)または(1,1)と言います。エラーを返します。私が他のところで読んだことによると、このエラーが返される唯一の理由は、データベース内のドキュメントが有効なGeoJSONオブジェクトではないためですが、データベース内の唯一のオブジェクトに何か問題がないことがわかります。

答えて

0

私はあなたの座標にgeoJSONポリゴンの外側の配列がないと思います。あなたの文書には、次のようになります。

{ 
    "_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 
} 

にGeoJSON仕様から、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).

関連する問題