$geoWithin (ジオメトリ内)

最終更新:2026-10-09

$geoWithin (ジオメトリ内)

$geoWithin は、位置が指定したジオメトリの内部にあるドキュメントを検索します。$box(長方形)、$polygon、$center(平面の円)、$centerSphere(球面の円)、$geometry(GeoJSON)が使えます。`{ loc: { $geoWithin: { $box: [[0, 0], [10, 10]] } } }` のように指定します。境界上の点も含まれます。2dsphere または 2d インデックスが必要です。

カテゴリ地理空間
MongoDB バージョン2.4+
例の言語mongosh(シェル)

📝 構文

{ <location field>: { $geoWithin: { $geometry: <GeoJSON> } } }

⚙️ パラメータ

位置フィールド位置情報を格納するフィールド。
ジオメトリ$box、$polygon、$center、$centerSphere、または $geometry。

戻り値:一致するドキュメントのカーソル

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $geoWithin: 長方形の内部にある店舗
db.stores.find({
  loc: { $geoWithin: { $box: [[-73.98, 40.75], [-73.97, 40.76]] } }
})

// GeoJSON ポリゴン
db.stores.find({
  loc: { $geoWithin: { $geometry: { type: 'Polygon', coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] } } }
})

出力:

// 位置が長方形またはポリゴンの内部にある店舗を返す

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$geoWithin と $near の違いは?
A$geoWithin は包含関係のみを判定し、並べ替えません。$near は距離順で結果を返します。
Q$geoWithin は円をサポートしますか?
Aはい。$center は平面の円、$centerSphere は球面の円を扱います。
Q$geoWithin にはインデックスが必要ですか?
Aはい。2dsphere または 2d インデックスが必須です。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%