AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

$GeoWithin(クエリ述語演算子)

$geoWithin

指定した形状内に完全に存在する地理空間データを含むドキュメントを選択します。

指定されるシェイプは、GeoJSONPolygon (単一リングまたは複数リング)、GeoJSONMultiPolygon 、またはレガシー coordinate pairs によって定義されたシェイプのいずれかになります。$geoWithin 演算子は、$geometry 演算子を使用して GeoJSONオブジェクトを指定します。

デフォルトの座標参照システム(CRS)を使用して GeoJSON 多角形またはマルチポリゴンを指定するには、次の構文を使用します。

{
<location field>: {
$geoWithin: {
$geometry: {
type: <"Polygon" or "MultiPolygon"> ,
coordinates: [ <coordinates> ]
}
}
}
}

$geoWithin単一の半球よりも大きい面積を持つ GeoJSON ジオメトリを指定する クエリの場合、デフォルトのCRS を使用すると、補完ジオメトリのクエリが実行されます。

カスタム MongoDB CRS を使用して単一リングの GeoJSON多角形を指定するには、 $geometry式でカスタム MongoDB CRS を指定する次のプロトタイプを使用します。

{
<location field>: {
$geoWithin: {
$geometry: {
type: "Polygon" ,
coordinates: [ <coordinates> ],
crs: {
type: "name",
properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
}
}
}
}
}

カスタムMongoDB CRS は反時計回りの巻き順序を使用するため、$geoWithin は、面積が単一の半球以上の単一リングの GeoJSON多角形を使用したクエリをサポートできます。指定された多角形が単一の半球より小さい場合、 $geoWithinMongoDB CRS を使用した の動作は、デフォルトのCRS の場合と同じになります。 「ビッグ」も参照してください多角形。

平面上の legacy coordinate pairs で定義された形状に含めるかどうかをクエリする場合は、次の構文を使用します。

{
<location field>: {
$geoWithin: { <shape operator>: <coordinates> }
}
}

利用可能な形状演算子は次のとおりです。

重要

経度と緯度を使用する場合は、longitude, latitude の順に座標を指定します。

$geoWithinには 地理空間インデックスは必要ありません。ただし、地理空間インデックスを使用するとクエリのパフォーマンスが向上します。2 dsphere2 d 地理空間インデックスはどちらも$geoWithin をサポートしています。

$geoWithin演算子はソートされた結果を返しません。そのため、 MongoDB は地理空間$geoWithin または$near$nearSphere クエリよりも早く クエリを返すことができ、結果はソートされます。

$geoWithin ジオメトリの一部がそのコンポーネント ジオメトリを含むと見なされたり、コンポーネント ジオメトリを共有する別の多角形と見なされたりすることを保証するものではありません。

$geoWithinの場合、単一の半球よりも大きい面積を持つ単一リングの多角形を指定する場合は、 式にカスタムMongoDB座標参照システムを含めます。それ以外の場合、補完ジオメトリに対して$geometry $geoWithinクエリを実行します。半球より大きい面積を持つその他すべての GeoJSON$geoWithin 多角形については、 が補完ジオメトリを照会します。

次の例では、GeoJSON Polygon 内に完全に存在するすべての loc データを選択します。多角形の面積は 1 つの半球の面積よりも小さくなります。

db.places.find(
{
loc: {
$geoWithin: {
$geometry: {
type : "Polygon" ,
coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
}
}
}
}
)

単一の半球よりも大きい面積を持つ単一リング多角形については、 「大きな」多角形内を参照してください。

単一の半球よりも大きい面積を持つ単一リングの GeoJSON 多角形でクエリを実行するには、 $geometry式でカスタム MongoDB 座標参照システムを指定する必要があります。 例:

db.places.find(
{
loc: {
$geoWithin: {
$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" }
}
}
}
}
}
)
このページを評価

項目一覧