MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/ /

MongoDB 検索クエリを実行する

このガイドでは、MongoDBの検索インデックスをクエリし、Rubyドライバーアプリケーションで高度な全文検索機能を使用する方法を学ぶことができます。$search集計パイプラインステージを使用して検索インデックスをクエリできます。

$search パイプライン ステージの詳細については、MongoDB Server マニュアルの「$search」ガイドを参照してください。

注意

Atlas および Community Edition のバージョン要件

$search 集計パイプライン演算子は、 MongoDB v4.2 以降を実行中MongoDB Atlasクラスター、またはMongoDB v8.2 以降を実行中MongoDB Community Editionクラスターでホストされているコレクションでのみ使用できます。コレクションはMongoDB 検索インデックスでカバーされている必要があります。必要な設定とこの演算子の機能の詳細については、MongoDB 検索するのドキュメントを参照してください。

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

Atlas コレクションで検索を実行する前に、まずコレクションに MongoDB Search インデックスを作成する必要があります。MongoDB Search インデックスは、検索可能な形式でデータを分類するデータ構造です。MongoDB Search インデックスの作成について詳しくは、「MongoDB Search および MongoDB Vector Search インデックス」ガイドをご参照ください。

$search集計パイプライン ステージを使用するには、実行するクエリのタイプを示すMongoDB 検索するクエリ演算子を指定する必要があります。オプションで、コレクターを使用して、クエリ出力の値と範囲を指定できます。MongoDB 検索するで利用可能なすべての演算子とコレクターのテーブルを表示するには、Atlas ドキュメントの「演算子とコレクター」ページを参照してください。

次の例では、compound 演算子を使用して複数の演算子を 1 つのクエリにまとめています。詳細については、Atlas ドキュメントの「 複合演算子 」ガイドを参照してください。

クエリには次の検索条件があります。

  • genres フィールドに Comedy を含めることはできません。

  • title フィールドには string New York が含まれている必要があります。

クエリには、次のステージが含まれます。

  • $limitを使用して、出力結果を 10 に制限します。

  • $project を使用して、title 以外のすべてのフィールドを除外し、score という名前のフィールドを追加します。

pipeline = [
{
"$search" => {
"index" => "index_name",
"compound" => {
"mustNot" => [
{
"text" => {
"query" => ["Comedy"],
"path" => "genres"
}
}
],
"must" => [
{
"text" => {
"query" => ["New York"],
"path" => "title"
}
}
]
}
}
},
{ "$limit" => 10 },
{
"$project" => {
"_id" => 0,
"title" => 1,
"score" => { "$meta" => "searchScore" }
}
}
]
result = collection.aggregate(pipeline)
puts result.to_a
{'title': 'New York, New York', 'score': 6.786379814147949}
{'title': 'New York', 'score': 6.258603096008301}
{'title': 'New York Doll', 'score': 5.381444931030273}
{'title': 'Escape from New York', 'score': 4.719935417175293}
{'title': 'Autumn in New York', 'score': 4.719935417175293}
{'title': 'Sleepless in New York', 'score': 4.719935417175293}
{'title': 'Gangs of New York', 'score': 4.719935417175293}
{'title': 'Sherlock Holmes in New York', 'score': 4.203253746032715}
{'title': 'New York: A Documentary Film', 'score': 4.203253746032715}
{'title': 'An Englishman in New York', 'score': 4.203253746032715}

使用可能なMongoDB Search 演算子の詳細については、 MongoDB Atlasドキュメントの「 演算子とコレクター 」ガイドを参照してください。

MongoDB 検索するの詳細と、その他のクエリの例については、MongoDB 検索するドキュメントを参照してください。

Atlas に保存されているデータに対してベクトル検索を実行する場合は、Atlas Vector Search を使用する必要があります。MongoDB Vector Search の詳細については、「Atlas Vector Search ドキュメント」を参照してください。

戻る

地理空間

項目一覧