Docs Menu
Docs Home
/ / /
Scala
/

地理空間検索

項目一覧

  • 前提条件
  • MongoDB 配置への接続
  • 2dsphere インデックスの作成
  • GeoJSON ポイント近くのロケーションのクエリ

地理空間クエリをサポートするために、MongoDB は 地理空間インデックス と 地理空間クエリ演算子 を提供します。

地理空間クエリの実行の詳細については、サーバー マニュアルの地理空間クエリを参照してください。

このガイドのコード例を実行するには、次のコンポーネントを設定する必要があります。

  • test.restaurantsドキュメントrestaurants.json アセット の ファイルのドキュメントが入力された {0 コレクション。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 配置に接続し、 インスタンスとMongoDatabase MongoCollectionインスタンスを 宣言して定義します。

次のコードは、ポート27017localhostで実行されているスタンドアロンの 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インデックスを作成するには、 Indexes.geo2dsphere()ヘルパーを使用して2dsphereインデックスの仕様を作成します。 仕様をMongoCollection.createIndex()メソッドに渡してインデックスを作成します。

次の例では、 コレクションの"contact.location"フィールドに2dsphereインデックスを作成します。

collection.createIndex(Indexes.geo2dsphere("contact.location")).printResults()

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()

戻る

テキスト検索