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

平面上の形状内のロケーションのクエリ

項目一覧

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

平面上の指定した形状内のロケーション データをクエリするには、 $geoWithin演算子を使用します。 平面に表示されるデータとともに$geoWithinを使用するには、次の構文を使用します。

db.<collection>.find( {
<location field> : {
$geoWithin : {
<shape operator> : <coordinates>
}
}
} )

クエリでこれらの値を置き換えます。

フィールド
説明

<collection>

クエリするコレクション。

<location field>

位置データを含む フィールド。 平面に対するクエリの場合、データはlegacy coordinate pairs として保存する必要があります。

<shape operator>

クエリの形状。 次のいずれかの形状を指定できます。

  • $box

  • $polygon

  • $center (円を定義します)

このページの例では、 $box演算子を使用しています。 他の形状を使用するクエリの例については、それらの演算子ページを参照してください。

<coordinates>

クエリする形状のエッジを定義する座標。 $box演算子とともに使用する場合、座標は直列の左下隅と右上隅を表します。

経度と緯度の座標を指定する場合は、最初に経度、次に緯度を指定します。

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

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

$geoWithin には地理空間インデックスは必要ありません。 ただし、地理空間インデックスを使用するとクエリのパフォーマンスが向上します。

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 が含まれています。

$geoWithinを使用してcontactsコレクションをクエリします。 次の$geoWithinクエリでは、 $box演算子を使用して、指定された範囲に表示されるドキュメントを返します。

db.contacts.find( {
address: {
$geoWithin: {
$box: [ [ 49, 40 ], [ 60, 60 ] ]
}
}
} )

出力:

[
{
_id: ObjectId("647e4e496cdaf4dc323ec92a"),
name: 'Evander Otylia',
phone: '202-555-0193',
address: [ 55.5, 42.3 ]
}
]

$box演算子の値は、クエリ対象の正方形の左下と右上の隅を表します。

前述の$geoWithinクエリでは、次の冗長性を持つ正方形内にあるドキュメントが返されます。

  • [ 49, 40 ]

  • [ 49, 60 ]

  • [ 60, 60 ]

  • [ 60, 40 ]

$geoWithin演算子を他の形状で使用する方法については、次のページを参照してください。

戻る

平面上の点