$geoIntersects
定義
$geoIntersects
指定された GeoJSONオブジェクトと地理空間データが交差するドキュメントを選択します。すなわち データと指定されたオブジェクトの共通部分が空でない場合。
$geoIntersects
演算子は、$geometry
演算子を使用してGeoJSONオブジェクトを指定します。 デフォルトの座標参照システム(CRS)を使用して GeoJSON 多角形またはマルチポリゴンを指定するには、次の構文を使用します。{ <location field>: { $geoIntersects: { $geometry: { type: "<GeoJSON object type>" , coordinates: [ <coordinates> ] } } } } 単一の半球よりも大きい面積を持つ GeoJSON ジオメトリを指定する
$geoIntersects
クエリの場合、デフォルトの CRS を使用すると、補完ジオメトリのクエリが実行されます。カスタム MongoDB CRS を使用して単一リングの GeoJSON多角形を指定するには、
$geometry
式でカスタム MongoDB CRS を指定する次のプロトタイプを使用します。{ <location field>: { $geoIntersects: { $geometry: { type: "Polygon" , coordinates: [ <coordinates> ], crs: { type: "name", properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" } } } } } } カスタム MongoDB CRS は反時計回りの巻き順序を使用し、
$geoIntersects
が、面積が単一の半球以上の単一リングの GeoJSON多角形を使用したクエリをサポートできるようにします。指定された多角形が単一の半球よりも小さい場合、MongoDB CRS を使用した$geoIntersects
の動作は、デフォルトの CRS を使用した場合と同じになります。「大きな」多角形についても参照してください。重要
緯度と経度の座標を指定する場合は、最初に経度、次に緯度を指定します。
有効な経度の値は、
-180
以上、180
以下です。有効な緯度の値は
-90
以上、90
以下です。
動作
地理空間インデックス
$geoIntersects
は球面ジオメトリを使用します。 $geoIntersects
には地理空間インデックスは必要ありません。 ただし、地理空間インデックスを使用するとクエリのパフォーマンスが向上します。 2 dsphere地理空間インデックスのみが$geoIntersects
をサポートしています。
退化ジオメトリ
$geoIntersects
は、多角形が独自のエッジと交差するために考慮されることを保証するものではありません。独自の冗長性。または 冗長 または エッジを共有するが、内部スペースは含まない別の多角形。
"大きな" 多角形
$geoIntersects
の場合、単一の半球よりも大きい面積を持つ単一リングの多角形を指定する場合は、 the
custom MongoDB coordinate reference system in the $geometry
式を含めます。それ以外の場合、補完ジオメトリに対して$geoIntersects
クエリを実行します。 半球より大きい面積を持つその他すべての GeoJSON 多角形については、 $geoIntersects
が補完ジオメトリを照会します。
例
多角形と交差する
次の例では、 $geoIntersects
を使用して、 coordinates
配列で定義されたPolygon
と交差するすべてのloc
データを選択します。 多角形の面積は 1 つの半球の面積よりも小さくなります。
db.places.find( { loc: { $geoIntersects: { $geometry: { type: "Polygon" , coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ] } } } } )
単一の半球よりも大きい面積を持つ単一リングの多角形については、「 「大きな」多角形と交差する を参照してください。
「大きな」多角形と交差します
単一の半球よりも大きい面積を持つ単一リングの GeoJSON 多角形でクエリを実行するには、 $geometry
式でカスタム MongoDB 座標参照システムを指定する必要があります。 例:
db.places.find( { loc: { $geoIntersects: { $geometry: { type : "Polygon", coordinates: [ [ [ -100, 60 ], [ -100, 0 ], [ -100, -60 ], [ 100, -60 ], [ 100, 60 ], [ -100, 60 ] ] ], crs: { type: "name", properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" } } } } } } )