地理空間クエリをサポートするために、MongoDB は 地理空間インデックス と 地理空間クエリ演算子 を提供します。
地理空間クエリの実行の詳細については、サーバー マニュアルの「地理空間クエリ 」を参照してください。
前提条件
このガイドのコード例を実行するには、次のコンポーネントを設定する必要があります。
test.restaurantsドキュメントrestaurants.jsonアセットGithubの ファイルのドキュメントが入力された コレクション。次のインポート ステートメントは次のとおりです。
import org.mongodb.scala._ import org.mongodb.scala.model.geojson._ import org.mongodb.scala.model.Indexes import org.mongodb.scala.model.Filters 
注意
このガイドでは、 クイック スタート プライマリで説明されているObservable暗黙を使用します。
MongoDB 配置への接続
まず、MongoDB 配置に接続し、 インスタンスとMongoDatabase MongoCollectionインスタンスを 宣言して定義します。
次のコードは、ポート27017のlocalhostで実行されているスタンドアロンの MongoDB 配置に接続します。 次に、 testデータベースを参照するためのdatabase変数と、 restaurantsコレクションを参照するためのcollection変数を定義します。
val mongoClient: MongoClient = MongoClient() val database: MongoDatabase = mongoClient.getDatabase("test") val collection: MongoCollection[Document] = database.getCollection("restaurants") 
MongoDB 配置への接続の詳細については、「 MongoDB への接続」チュートリアルを参照してください。
2dsphere インデックスの作成
2dsphereインデックスを作成するには、 Indexes.geo2dsphere()ヘルパーを使用して2dsphereインデックスの仕様を作成します。 仕様をMongoCollection.createIndex()メソッドに渡してインデックスを作成します。
次の例では、 コレクションの"contact.location"フィールドに2dsphereインデックスを作成します。
collection.createIndex(Indexes.geo2dsphere("contact.location")).printResults() 
GeoJSON ポイント近くのロケーションのクエリ
MongoDB はさまざまな地理空間クエリ演算子を提供します。 地理空間クエリフィルターの作成を容易にするために、ドライバーはFiltersクラスとcom.mongodb.client.model.geojsonパッケージを提供します。
次の例では、指定された GeoJSON Pointインスタンスから少なくとも1000.0メートル、最大5000.0メートル離れたドキュメントを、最も近いものから最も遠いものの順に自動的にソートして返します。
val refPoint = Point(Position(-73.9667, 40.78)) collection.find(Filters.near("contact.location", refPoint, 5000.0, 1000.0)).printResults()