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

MongoDB 検索クエリを実行する

このガイドでは、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 検索クエリを実行するための集計パイプラインを作成する方法について説明します。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 インデックス」のセクションをご覧ください。

この例を実行する前に、次の定義を持つ 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())
}

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 つのクエリに結合します。

フィールドが指定した値と一致するかどうかを確認します。equals() メソッドと equalsNull() メソッドにマップされます。

指定されたインデックス付きフィールド名へのパスがドキュメント内に存在するかどうかをテストします。

指定されたパスにあるBSON番号、日付、ブール値、ObjectId、uuid、または string 値の配列を検索し、フィールドの値が指定された配列内の任意の値と等しいドキュメントを返します。

入力ドキュメントに類似するドキュメントを返します。

数値、日付、 GeoJSONポイント値のクエリとスコアリングをサポートします。

インデックス構成で指定されたアナライザを使用して、順序付けられたタームのシーケンスを含むドキュメントを検索します。

インデックス付きフィールドと値の組み合わせのクエリをサポートします。

数値、日付、string 値のクエリとスコアリングをサポートします。numberRange() メソッドと dateRange() メソッドにマップされます。

クエリフィールドを 正規式として解釈します。

インデックス構成で指定したアナライザを使用して全文検索を実行します。

検索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ドキュメントを参照してください。