$nearSphere (球面距離検索)

最終更新:2026-10-09

$nearSphere (球面距離検索)

$nearSphere は、球面(大円)距離で近い順にジオスペーシャルなドキュメントを返します。`{ loc: { $nearSphere: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 5000 } } }` のように使います。$near とは異なり、常に球面距離をメートル単位で計算します(平面距離は 2d インデックス上の $near でのみ使われます)。2dsphere インデックスが必要です。

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

📝 構文

{ <location field>: { $nearSphere: { $geometry: <Point>, $maxDistance: <meters> } } }

⚙️ パラメータ

位置フィールド位置情報を格納するフィールド。
Point ジオメトリ[経度, 緯度] を持つ GeoJSON Point。
maxDistance任意。最大球面距離(メートル単位)。

戻り値:一致するドキュメントのカーソル(球面距離の昇順)

▶ 例

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

// $nearSphere: 5 km 以内の店舗を検索(球面距離)
// 座標は [経度, 緯度] の順
db.stores.find({
  loc: { $nearSphere: {
    $geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
    $maxDistance: 5000
  } }
})

出力:

// 5 km 以内の店舗を球面距離の近い順に返す

📌 注意事項

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

📚 関連チュートリアル

❓ よくある質問

Q$nearSphere と $near の違いは?
A$nearSphere は常に球面距離をメートル単位で使います。$near は 2d インデックス上では平面距離を使います。
Q座標の順序は?
AGeoJSON は [経度, 緯度] の順です。逆にすると大きくずれた場所になります。
Q$near と $nearSphere を併用できますか?
Aいいえ。クエリ内で使えるのはどちらか一方だけです。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%