Overview
このガイドでは、 Kotlin 同期ドライバー を使用してコレクションに対して MongoDB 検索クエリを実行する方法を説明します。MongoDB Search を使用すると、MongoDB Atlasでホストされているコレクションに対して全文検索を実行できます。MongoDB Search 検索インデックスは、検索の動作とインデックスを作成するフィールドを指定します。
サンプル データ
このガイドの例では、Atlasサンプルデータセットのsample_mflixデータベース内のmoviesコレクションを使用します。MongoDBデプロイを作成し、サンプルデータセットをロードする方法については、 「MongoDB の使用開始」ガイドを参照してください。集計操作とビルダの詳細については、集計操作ガイドをご覧ください。
MongoDB 検索クエリを実行する
このセクションでは、コレクションに対してMongoDB 検索クエリを実行するための集計パイプラインを作成する方法について説明します。Aggregates.search() ビルダ メソッドを使用して、検索条件を指定する $searchパイプラインステージを作成できます。次に、aggregate() メソッドを呼び出し、パイプラインをパラメーターとして渡します。
注意
Atlas および Community Edition のバージョン要件
$search集計パイプライン演算子は、 MongoDB v4.2 以降を実行中MongoDB Atlasクラスター、またはMongoDB v. 以降を実行中MongoDB Community Edition8 2クラスターでホストされているコレクションでのみ使用できます。この演算子の必要な設定と機能の詳細については、 MongoDB Search のドキュメント を参照してください。
MongoDB 検索クエリを実行する前に、コレクションにMongoDB 検索インデックスを作成する必要があります。MongoDB Searchインデックスをプログラムで作成する方法については、インデックスガイドの「検索インデックスの作成」セクションを参照してください。
MongoDB 検索するの例
この例では、次のアクションを実行してMongoDB 検索クエリを実行します。
Aggregates.search()ビルダ メソッドを使用して$searchステージを構築し、ドライバーにtitleフィールドに"Alabama"という単語が含まれているドキュメントをクエリするよう指示します。Aggregates.project()ビルダ メソッドを使用して$projectステージを構築し、クエリ結果にtitleフィールドを含めるようにドライバーに指示しますパイプラインのステージを
aggregate()メソッドに渡し、結果を出力します。
val pipeline: List<Bson> = listOf( search(SearchOperator.text( fieldPath("title"), "Alabama")), project(Projections.include("title")) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println(doc.toJson()) }
{"_id": {"$oid": "..."}, "title": "Alabama Moon"} {"_id": {"$oid": "..."}, "title": "Crazy in Alabama"} {"_id": {"$oid": "..."}, "title": "Sweet Home Alabama"}
MongoDB 検索する メタデータ
searchMeta() メソッドを使用して $searchMeta パイプラインステージを作成します。このステージは Atlas の全文検索結果のメタデータのみを返します。
次の例では、 MongoDB Search集計ステージの nearメタデータを示しています。
searchMeta( SearchOperator.near(2010, 1, fieldPath("year")) )
詳細情報
MongoDB 検索する の詳細については、Atlas ドキュメントの MongoDB 検索する を参照してください。
API ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。