MongoDBで地理的な距離を計算する方法


  1. 地理的な距離の計算方法: MongoDBでは、地理的な距離を計算するために、2つの地理的なポイント間の距離を計算する $geoNear アグリゲーションパイプラインステージを使用します。このステージは、地理的なインデックスが設定されている場合にのみ動作します。

  2. 地理的なインデックスの作成: 地理的な距離の計算を行うためには、まず地理的なインデックスを作成する必要があります。以下の例では、locations コレクションの coordinates フィールドに対して地理的なインデックスを作成しています。

db.locations.createIndex({ coordinates: "2dsphere" })
  1. 地理的な距離の計算クエリ: 地理的な距離の計算を行うためには、$geoNear アグリゲーションパイプラインステージを使用します。以下の例では、locations コレクション内のポイントから指定した地理的なポイントの距離を計算しています。
db.locations.aggregate([
  {
    $geoNear: {
      near: {
        type: "Point",
        coordinates: [longitude, latitude] // 指定した地理的なポイントの座標
      },
      distanceField: "distance", // 距離を格納するフィールド名
      spherical: true // 球面ジオメトリを使用する
    }
  }
])
  1. 結果の取得: 上記のクエリを実行すると、指定した地理的なポイントから各ポイントまでの距離が計算され、結果が返されます。結果には、指定した distanceField で指定したフィールドに距離が格納されます。

これらの方法とコード例を使用して、MongoDBで地理的な距離を計算することができます。適用したい具体的なケースに応じて、上記のコードをカスタマイズして利用してください。