Overview
このガイドでは、Kotlinドライバーを使用してコレクションに対してMongoDB Searchクエリを実行する方法を学ぶことができます。MongoDB Search を使用すると、MongoDB でホストされているコレクションに対して全文検索を実行できます。MongoDB Search インデックスは、検索の動作とインデックスを作成するフィールドを指定します。
サンプル データ
The examples in this guide use the movies collection in the sample_mflix database from the Atlas sample datasets. To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the Get Started guide. To learn more about aggregation operations and builders, see the Aggregation guide.
MongoDB 検索クエリを実行する
このセクションでは、コレクションに対してMongoDB 検索クエリを実行するための集計パイプラインを作成する方法について説明します。Aggregates.search() ビルダ メソッドを使用して、検索条件を指定する $searchパイプラインステージを作成できます。次に、aggregate() メソッドを呼び出し、パイプラインをパラメーターとして渡します。
注意
MongoDB v4.2 以降の Atlas でのみ利用可能
This aggregation pipeline operator is only available for collections hosted on MongoDB Atlas clusters running v4.2 or later that are covered by a MongoDB Search index. Learn more about the required setup and the functionality of this operator from the MongoDB Search documentation.
MongoDB Search クエリを実行する前に、コレクションに MongoDB Search インデックスを作成する必要があります。MongoDB Search インデックスをプログラムで作成する方法については、インデックスガイドの「MongoDB Search および MongoDB Vector Search インデックス」のセクションをご覧ください。
MongoDB 検索するの例
この例を実行する前に、次の定義を持つ movies コレクションに MongoDB Search インデックスを作成する必要があります。
{ "mappings": { "dynamic": false, "fields": { "title": { "type": "string" } } } }
この例では、次のアクションを実行して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.collect { doc -> println(doc.toJson()) }
MongoDB 検索する メタデータ
Use the searchMeta() method to create a $searchMeta pipeline stage, which returns only the metadata from the Atlas full-text search results.
Tip
MongoDB v4.4.11 以降の Atlas でのみ利用可能
This aggregation pipeline operator is available only on MongoDB Atlas clusters running v4.4.11 and later.
この例を実行する前に、次の定義を持つ movies コレクションに MongoDB Search インデックスを作成する必要があります。
{ "mappings": { "dynamic": false, "fields": { "year": { "type": "number" } } } }
次の例では、 MongoDB Search集計ステージの nearメタデータを示しています。
searchMeta( SearchOperator.near(2010, 1, fieldPath("year")) )
パイプライン検索ステージの作成
Kotlinドライバーは次の演算子のヘルパーメソッドを提供します。
演算子 | 説明 |
|---|---|
不完全な入力 string からの文字シーケンスを含む単語またはフレーズを検索します。 | |
2 つ以上の演算子を 1 つのクエリに結合します。 | |
フィールドが指定した値と一致するかどうかを確認します。 | |
指定されたインデックス付きフィールド名へのパスがドキュメント内に存在するかどうかをテストします。 | |
指定されたパスにあるBSON番号、日付、ブール値、ObjectId、uuid、または string 値の配列を検索し、フィールドの値が指定された配列内の任意の値と等しいドキュメントを返します。 | |
入力ドキュメントに類似するドキュメントを返します。 | |
数値、日付、 GeoJSONポイント値のクエリとスコアリングをサポートします。 | |
インデックス構成で指定されたアナライザを使用して、順序付けられたタームのシーケンスを含むドキュメントを検索します。 | |
インデックス付きフィールドと値の組み合わせのクエリをサポートします。 | |
数値、日付、string 値のクエリとスコアリングをサポートします。 | |
クエリフィールドを 正規式として解釈します。 | |
インデックス構成で指定したアナライザを使用して全文検索を実行します。 | |
検索stringに任意の文字と一致する特殊文字を使用するクエリを有効にします。 |
パイプライン検索ステージの例
この例を実行する前に、moviesコレクションに次の定義を持つMongoDB検索インデックスを作成する必要があります。
{ "mappings": { "dynamic": true, "fields": { "title": { "analyzer": "lucene.keyword", "type": "string" }, "genres": { "normalizer": "lowercase", "type": "token" } } } }
MongoDB Search インデックスの作成の詳細については、「 インデックスガイド 」の「 MongoDB Search とMongoDB ベクトル検索インデックス 」セクションを参照してください。
次のコードでは、次の仕様を持つ $search ステージが作成されます。
genres配列に"Comedy"が含まれていることを確認fullplotフィールドでフレーズ"new york"を検索します1950から2000までのyear値と一致します"Love"というタームで始まるtitle値を検索します
val searchStage = Aggregates.search( SearchOperator.compound() .filter( listOf( SearchOperator.`in`(fieldPath("genres"), listOf("Comedy")), SearchOperator.phrase(fieldPath("fullplot"), "new york"), SearchOperator.numberRange(fieldPath("year")).gtLt(1950, 2000), SearchOperator.wildcard(fieldPath("title"), "Love *") ) ) ) val projectStage = Aggregates.project( Projections.include("title", "year", "genres")) val pipeline = listOf(searchStage, projectStage) val results = collection.aggregate(pipeline)
MongoDB 検索するヘルパーメソッドの詳細については、ドライバー Core API ドキュメントの SearchOperator インターフェース参照を参照してください。
詳細情報
To learn more about MongoDB Search, see MongoDB Search in the Atlas documentation.
API ドキュメント
このガイドで言及されているメソッドについて詳しくは、次のAPIドキュメントを参照してください。