この章では、MongoDBの地理空間クエリ機能の1つが紹介されており、距離に基づいてドキュメントデータをクエリする機能について説明しています。
アプリケーションシナリオ:近くの店舗を検索し、近くの人を見つける。
必須チュートリアル
距離に基づいてデータをクエリするための前提条件は次のとおりです。
- 各ドキュメントデータには、座標データを格納するフィールドが含まれており、例えば、
location
フィールドには店舗の座標が格納されています。 - 2dsphereまたは2d空間インデックスを作成します。
$near演算子
MongoDBは$near演算子を使用して、距離に基づいてドキュメントデータをクエリします。
フォーマット:
{
<location field>: { // 座標データを格納するフィールド
$near: {
$geometry: { // 比較のための参照座標を設定
type: "Point" ,
coordinates: [ 経度 , 緯度 ]
},
$maxDistance: 最大距離(メートル単位),
$minDistance: 最小距離(メートル単位)
}
}
}
注意:$nearクエリによって返されるデータは、最も近いものから最も遠いものの順に並べられます。
例
shop
コレクションには各店舗の座標がlocation
フィールドに格納されており、最も近い店舗を見つけるクエリは次のとおりです(最小距離1000メートル、最大距離5000メートル)。
db.shop.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // 私の座標
$minDistance: 1000, // 最小距離
$maxDistance: 5000 // 最大距離
}
}
}
)