MongoDBはジオスペーシャルデータとクエリに対する組み込みサポートを備えており、場所(ポイント、エリア)を保存し、近接性、包含性、交差によってクエリを実行できます。2dsphereインデックスとGeoJSONを使用しており、「近い場所を見つける」などの機能を別のジオスペーシャルデータベースなしで実現します。
ロケーションデータの保存(GeoJSON)
db..({
: ,
: { : , : [-, ] }
});
db..({ : });
MongoDBはジオスペーシャルデータとクエリに対する組み込みサポートを備えており、場所(ポイント、エリア)を保存し、近接性、包含性、交差によってクエリを実行できます。2dsphereインデックスとGeoJSONを使用しており、「近い場所を見つける」などの機能を別のジオスペーシャルデータベースなしで実現します。
db..({
: ,
: { : , : [-, ] }
});
db..({ : });
場所はGeoJSON({ type: "Point", coordinates: [lng, lat] }——経度が最初)として保存され、2dsphereインデックスは球体(地球)上のジオスペーシャルクエリを効率的に有効にします。
// $near — find documents near a point, SORTED by distance
db.places.find({
location: {
$near: {
$geometry: { type: "Point", coordinates: [-73.97, 40.77] },
$maxDistance: 1000 // within 1000 meters
}
}
});
// → results ordered nearest-first (great for "places near me")
$nearはポイント付近のドキュメントを検索し、距離順に返されます——「近い場所」機能の基礎です。
// $geoWithin — find documents INSIDE an area (polygon, circle)
db.places.find({
location: {
$geoWithin: {
$centerSphere: [[-73.97, 40.77], 5 / 6378.1] // within 5km radius
}
}
});
// $geoIntersects — find documents whose geometry intersects a given shape
db.zones.find({ area: { $geoIntersects: { $geometry: somePolygon } } });
$geoWithinはエリア(ポリゴン/サークル)内のドキュメントを検索します;$geoIntersectsは形状と交差するジオメトリを検索します——地域ベースのクエリのためです。
ジオスペーシャルクエリサポートはロケーションベースの機能のためのMongoDBの価値あるおよび理解することは、場所を扱うアプリケーション(マップ、配送、店舗ロケーター、ライドシェアリング、ソーシャルチェックイン——ますます一般的な機能)に有用な知識です。
コアバリューは、MongoDBがジオスペーシャルデータ(GeoJSONとして)を保存し、ジオスペーシャルクエリを直接実行できることです——近接性($near——「近い場所」、距離でソート、ロケーション検索機能の基礎)、包含性($geoWithin——エリアまたは半径内のドキュメント)、交差($geoIntersects——形状と重なるジオメトリ)でドキュメントを検索できます——すべて地球の球面ジオメトリを考慮した2dsphereインデックスにより効率化されます。
これは、多くのロケーションベースの機能をMongoDBで直接構築でき、別の専門的なジオスペーシャルデータベースが不要なため、スタックが簡潔になることを意味します。
実践的な本質を理解すること——GeoJSON保存(経度最初の座標順(一般的な落とし穴))、2dsphereインデックスの作成、クエリオペレーター($near、$geoWithin、$geoIntersects)——は実際のロケーション機能の実装を可能にします。
ロケーションベースの機能はますます一般的なアプリケーション要件であり、MongoDBは対応するジオスペーシャルサポート(保存、近接性/包含性/交差クエリ、効率的な球面インデックス)を提供して直接対応するため、MongoDBジオスペーシャルクエリを理解すること——GeoJSON保存、2dsphereインデックス、近接性/包含性オペレーター——はMongoDBでロケーション対応アプリケーションを構築するための価値あり、実践的に関連する知識であり、一般的な「ロケーション近くのものを検索する」要件のための有用な機能です。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する