Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Pymongo ドライバー

Atlas Search

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

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

注意

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

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

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

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

$search 集計パイプラインステージを使用するには、実行したいクエリのタイプを示す Atlas Search クエリ演算子を指定する必要があります。結果を値または範囲でグループ化するコレクターをオプションで指定することもできます。Atlas Search で使用できるすべての演算子とコレクターの表を表示するには、Atlas 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}

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

Atlas Search の詳細およびその他のクエリ例については、Atlas Search ドキュメントをご覧ください。

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

戻る

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

次へ

Atlas Vector Search

項目一覧