Docs Menu
Docs Home
/ /

MongoDB Search

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

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

注意

MongoDB v4.2 以降の Atlas でのみ利用可能

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

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

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

$search集計パイプラインステージを使用するには、実行するクエリのタイプを示すMongoDB Searchクエリ演算子を指定する必要があります。オプションで、値または範囲で結果をグループ化するコレクターを指定することもできます。 MongoDB Search で使用可能なすべての演算子とコレクターのテーブルを表示するには、「 MongoDB Search クエリでの演算子とコレクターの使用 」を参照してください。

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

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

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

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

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

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

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

client = pymongo.MongoClient("<connection-string>")
result = client["sample_mflix"]["movies"].aggregate([
{
"$search": {
"index": "pymongoindex",
"compound": {
"mustNot": [
{
"text": {
"query": [
"Comedy"
],
"path": "genres"
}
}
],
"must": [
{
"text": {
"query": [
"New York"
],
"path": "title"
}
}
],
}
}
},
{ "$limit": 10 },
{
"$project": {
"_id": 0,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
for i in result:
print(i)
{'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 Search の詳細と、その他のクエリ例については、 MongoDB Search のドキュメント を参照してください。

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

戻る

データベースコマンドの実行

次へ

MongoDB ベクトル検索

項目一覧