$near (近傍・距離順)
最終更新:2026-10-09
$near (近傍・距離順)
$near は、地点からの距離の昇順で地理空間ドキュメントを返します。`{ loc: { $near: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 1000 } } }` のように使います。2dsphere または 2d インデックスが必要で、同じクエリ内で別の $near や $nearSphere と組み合わせることはできません。
| カテゴリ | 地理空間 |
|---|---|
| MongoDB バージョン | 2.4+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <location field>: { $near: { $geometry: <Point>, $maxDistance: <meters> } } }
⚙️ パラメータ
| 位置フィールド | 位置情報を格納するフィールド。 |
|---|---|
| Point ジオメトリ | [経度, 緯度] を持つ GeoJSON Point。 |
| maxDistance | 任意。最大距離(メートル単位)。 |
戻り値:一致するドキュメントのカーソル(距離の昇順)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $near: 地点から 1000 m 以内の店舗
db.stores.find({
loc: { $near: {
$geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
$maxDistance: 1000
} }
})
出力:
// 1000 m 以内の店舗を距離の昇順で返す
📌 注意事項
- 結果は自動的に距離順に並ぶ。sort は不要
- 2dsphere(GeoJSON)または 2d(座標ペア)インデックスが必要
- $maxDistance の単位はメートル(GeoJSON)
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$near の結果は事前にソートされていますか?
Aはい。距離の昇順で返されるため、追加の sort は不要です。
Q$near にインデックスは必須ですか?
Aはい。2dsphere または 2d インデックスがなければエラーになります。
Q$near と $geoWithin はいつ使い分けますか?
A距離順の並べ替えが必要なら $near、包含関係の判定のみなら $geoWithin を選びます。