$geoIntersects (ジオメトリの交差)
最終更新:2026-10-09
$geoIntersects (ジオメトリの交差)
$geoIntersects は、GeoJSON ジオメトリが指定したジオメトリと交差するドキュメントを検索します。`{ loc: { $geoIntersects: { $geometry: { type: 'Polygon', coordinates: [...] } } } }` のように使います。$geoWithin(点が領域内か)と違い、$geoIntersects は点・線・ポリゴンという 2 つのジオメトリが交差するかどうかを判定します。2dsphere インデックスが必要です。
| カテゴリ | 地理空間 |
|---|---|
| MongoDB バージョン | 2.4+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <location field>: { $geoIntersects: { $geometry: <GeoJSON geometry> } } }
⚙️ パラメータ
| 位置フィールド | 位置情報を格納するフィールド。 |
|---|---|
| GeoJSON ジオメトリ | GeoJSON オブジェクト: Point、LineString、Polygon など。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $geoIntersects: ルートと交差する停留所
db.stops.find({
loc: { $geoIntersects: {
$geometry: { type: 'LineString', coordinates: [[0, 0], [1, 1]] }
} }
})
出力:
// LineString と交差する停留所を返す(例: セグメント上の点)
📌 注意事項
- $geoWithin と違い、線-ポリゴンやポリゴン-ポリゴンの交差を扱える
- 2dsphere インデックスと GeoJSON 座標が必要
- 結果は並べ替えられない
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$geoIntersects と $geoWithin の関係は?
A$geoWithin は点が図形の中にあるかを判定します。$geoIntersects はジオメトリ同士の交差を判定する、より広い概念です。
Qポリゴン境界上の点も一致しますか?
Aはい。境界も交差として数えられます。
Q$geoIntersects に必要なインデックスは?
A2dsphere インデックスです。