Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / / /

平面上の点近くのロケーションの検索

項目一覧

  • このタスクについて
  • 始める前に
  • 手順
  • 詳細

平面上の指定した点の近くに表示されるロケーション データをクエリできます。

指定した点の近くの位置データをクエリするには、 $near演算子を使用します。

db.<collection>.find( {
<location field> : {
$near : [ <longitude>, <latitude> ],
$maxDistance : <distance in meters>
}
} )
  • $near演算子で座標ペアを指定する場合は、最初に経度、次に緯度を指定します。

    • 有効な経度の値は、-180 以上、180 以下です。

    • 有効な緯度の値は-90 以上、90 以下です。

  • $maxDistanceフィールドに距離をメートル単位で指定します。

  1. contacts コレクションを次のように作成します。

    db.contacts.insertMany( [
    {
    name: "Evander Otylia",
    phone: "202-555-0193",
    address: [ 55.5, 42.3 ]
    },
    {
    name: "Georgine Lestaw",
    phone: "714-555-0107",
    address: [ -74, 44.74 ]
    }
    ] )

    addressフィールドにはlegacy coordinate pairs が含まれています。

  2. $near演算子を使用して位置データをクエリするには、位置データを含む フィールドに地理空間インデックスを作成する必要があります。

    addressフィールドに 2D インデックス を作成します。

    db.contacts.createIndex( { address: "2d" } )

コレクションをクエリするには、 $nearを使用します。 次の$nearクエリは、座標ペア[ -73.92, 40.78 ]から 50 メートル以内にaddressフィールドがあるドキュメントを返します。

db.contacts.find( {
address: {
$near: [ -73.92, 40.78 ],
$maxDistance : 50
}
} )

出力:

[
{
_id: ObjectId("640a3dd9c639b6f094b00e89"),
name: 'Georgine Lestaw',
phone: '714-555-0107',
address: [ -74, 44.74 ]
}
]

結果は、クエリ点からの距離が最も近いものから最も遠いものの順にソートされます。

戻る

クエリ