地理空間インデックス
地理空間インデックスは、 GeoJSONオブジェクトまたはlegacy coordinate pairsとして保存されたデータに対するクエリをサポートします。 地理空間インデックスを使用すると、地理空間データに対するクエリのパフォーマンスを向上させたり、特定の地理空間クエリを実行したりできます。
MongoDB は 2 種類の地理空間インデックスを提供します。
2dsphere インデックスは、球体上のジオメトリを解釈するクエリをサポートします。
2d インデックス。平面上のジオメトリを解釈するクエリをサポートします。
地理空間データとクエリ操作の詳細については、「地理空間クエリ 」を参照してください。
ユースケース
アプリケーションが地理空間データを含むフィールドを頻繁にクエリする場合は、地理空間インデックスを作成してクエリのパフォーマンスを向上させることができます。
特定のクエリ操作には地理空間インデックスが必要です。 $near
または$nearSphere
演算子、または$geoNear
集計ステージを使用してクエリを実行する場合は、地理空間インデックスを作成する必要があります。 詳細については、「地理空間クエリ演算子」と「地理空間集計ステージ 」を参照してください。
たとえば、都市のサブスクライブの座標を指定するlocation
フィールドを含むドキュメントを含むsubway
コレクションを考えてみましょう。 特定の地域内のステーションのリストを返すには、よく$geoWithin
演算子を使用してクエリを実行します。 このクエリのパフォーマンスを向上させるには、 location
フィールドに地理空間インデックスを作成します。 インデックスを作成したら、 $near
演算子を使用してクエリを実行すると、最も近いステーションから最も遠いものの順にソートされて、近くのステーションのリストが返されます。
はじめる
地理空間インデックスを作成し、地理空間クエリを実行するには、以下を参照してください。
詳細
このセクションでは、地理空間インデックスの詳細について説明します。
シャーディングされたコレクション
コレクションをシャーディングする場合、地理空間インデックスをシャードキーとして使用することはできません。 ただし、別のフィールドをシャードキーとして使用して、シャーディングされたコレクションに地理空間インデックスを作成することはできます。
カバード クエリ
地理空間インデックスは、クエリをカバーできません。
球面クエリ
球状データのクエリに 2d
インデックスを使用すると、誤った結果やエラーが返されることがあります。たとえば、2d
インデックスでは、北極と南極が入っている球面クエリはサポートされていません。
ただし、 2dsphere
インデックスは球面クエリと2 次元クエリの両方に使用できます。 2 次元クエリの場合、 2dsphere
インデックスは legacy coordinate pairs として保存されたデータをGeoJSON ポイント型に変換します。
詳細
地理空間クエリ操作の例については、「地理空間クエリの例 」を参照してください。