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

2dsphereインデックス のクエリ

項目一覧

  • 多角形に囲まれた GeoJSON オブジェクト
  • GeoJSON オブジェクトの交差
  • GeoJSON ポイントへの近接性
  • 球体上で定義された円内の点

次のセクションでは、 2dsphereインデックスでサポートされているクエリについて説明します。

$geoWithin演算子は、GeoJSON 多角形内にあるロケーション データをクエリします。 位置データは GeoJSON 形式で保存する必要があります。 次の構文を使用します。

db.<collection>.find( { <location field> :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates : [ <coordinates> ]
} } } } )

次の例では、GeoJSON 多角形内に完全に存在するすべてのポイントとシェイプを選択します。

db.places.find( { loc :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates : [ [
[ 0 , 0 ] ,
[ 3 , 6 ] ,
[ 6 , 1 ] ,
[ 0 , 0 ]
] ]
} } } } )

$geoIntersects演算子は、指定された GeoJSON オブジェクトと交差するロケーションをクエリします。 交差する空でない場合、ロケーションはオブジェクトと交差します。 これには、共有エッジを持つドキュメントが含まれます。

$geoIntersects演算子は、次の構文を使用します。

db.<collection>.find( { <location field> :
{ $geoIntersects :
{ $geometry :
{ type : "<GeoJSON object type>" ,
coordinates : [ <coordinates> ]
} } } } )

次の例では、 $geoIntersectsを使用して、 coordinates配列で定義された多角形と交差するすべてのインデックス付きポイントとシェイプを選択します。

db.places.find( { loc :
{ $geoIntersects :
{ $geometry :
{ type : "Polygon" ,
coordinates: [ [
[ 0 , 0 ] ,
[ 3 , 6 ] ,
[ 6 , 1 ] ,
[ 0 , 0 ]
] ]
} } } } )

近接クエリは、定義された点に最も近い点を返し、結果を距離順にソートします。 GeoJSON データの近接クエリには2dsphereインデックスが必要です。

GeoJSONポイントへの近接性をクエリするには、 $near演算子のいずれかを使用します。 距離はメートル単位です。

$nearは次の構文を使用します。

db.<collection>.find( { <location field> :
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : [ <longitude> , <latitude> ] } ,
$maxDistance : <distance in meters>
} } } )

例については、 $nearを参照してください。

$nearSphere演算子と$geoNear集計パイプライン ステージも参照してください。

球体上の「球面上限」内のすべてのグリッド座標を選択するには、 演算子とともに$geoWithin $centerSphereを使用します。以下を含む配列を指定します。

次の構文を使用します。

db.<collection>.find( { <location field> :
{ $geoWithin :
{ $centerSphere :
[ [ <x>, <y> ] , <radius> ] }
} } )

次の例では、グリッド座標をクエリし、経度88 Wと緯度30 Nの 10 マイル以内にあるすべてのドキュメントを返します。 この例では、距離 10 マイルを地球のおおよその等価半径(3963.2 マイル)で割ってラジアンに変換します。

db.places.find( { loc :
{ $geoWithin :
{ $centerSphere :
[ [ -88 , 30 ] , 10 / 3963.2 ]
} } } )

戻る

2dsphere