AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Search クエリの実行

このガイドでは、Scala ドライバーを使用してコレクションに対して MongoDB Search クエリを実行する方法を学ぶことができます。MongoDB Search を使用すると、コレクションに対して全文検索を実行できます。MongoDB Search インデックスは、検索の動作とインデックスするフィールドを指定します。

Scala ドライバーを使用して MongoDB Search インデックスを作成および管理する方法については、「MongoDB Search および MongoDB ベクトル検索インデックス」ガイドを参照してください。

moviessample_mflixこのガイドの例では、Atlasサンプルデータセットの データベースの コレクションを使用します。 MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、「 Atlas を使い始める 」を参照してください。

注意

MongoDB Search は次の配置で利用できます。

  • MongoDB Atlas v4.2 以降

  • MongoDB Community Edition v8.2 以降

MongoDB Search クエリを実行するには、コレクションに MongoDB Search インデックスが必要です。MongoDB Search インデックスの作成方法について詳しくは、「MongoDB Search および MongoDB Vector Search インデックス」ガイドを参照してください。

フルテキスト検索を実行するには、$search パイプラインステージで aggregate() メソッドを呼び出します。Scala ドライバーは、このステージを作成するための Aggregates.search() ヘルパーメソッドを提供します。search() メソッドには、次の引数が必要です。

  • SearchOperator 検索するフィールドとテキストを指定するインスタンス

  • SearchOptions 検索をカスタマイズするオプションを指定するインスタンス。これには、使用するMongoDB Searchインデックスの名前が含まれます。

次の例では、title フィールドでテキスト "Alabama" を検索し、デフォルトで含まれる _id フィールドと、一致するドキュメントの title フィールドのみをプロジェクトします。

val operator = SearchOperator.text(
SearchPath.fieldPath("title"), "Alabama")
val options = searchOptions().index("<search index name>")
val pipeline = Seq(
Aggregates.search(operator, options),
Aggregates.project(Projections.include("title"))
)
try {
Await
.result(collection.aggregate(pipeline).toFuture(), 20.seconds)
.foreach((doc: Document) => println(doc.toJson()))
} catch {
case e: Throwable => println(s"There was an error: $e")
}

Tip

Atlas ドキュメントのMongoDB Search チュートリアルを表示するには、「 Atlas Search クエリの実行 」を参照してください。

注意

MongoDB Search メタデータは、次の配置で利用できます。

  • MongoDB Atlas v4.4.11 以降

  • MongoDB Community Edition v8.2 以降

Aggregates.searchMeta() ヘルパー メソッドを使用して、検索結果を返さずに MongoDB Search クエリからメタデータのみを取得します。次の例では、2010 に近い値を year フィールドで検索するクエリのメタデータが返されます。

try {
Await
.result(
collection.aggregate(Seq(
Aggregates.searchMeta(
SearchOperator.near(2010, 1, SearchPath.fieldPath("year")))
)).toFuture(),
20.seconds
)
.foreach((doc: Document) => println(doc.toJson()))
} catch {
case e: Throwable => println(s"There was an error: $e")
}

MongoDB Search の詳細については、Atlas ドキュメントの「 MongoDB Search の概要 」を参照してください。

このガイドで説明するメソッドとタイプの詳細については、次の API ドキュメントを参照してください。