インデックスによるクエリの最適化
項目一覧
Overview
このページでは、PyMongo で使用できる一般的なタイプのインデックスの操作方法を示すコピー可能なコード例があります。
Tip
インデックスの操作の詳細については、 インデックスとの連携 ガイドをご覧ください。 このページに表示されているインデックスの詳細については、各セクションに提供されているリンクを参照してください。
このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>
など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。
サンプル アプリケーション
次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。
PyMongo がインストールされていることを確認します。
次のコードをコピーし、新しい
.py
ファイルに貼り付けます。このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。
1 import pymongo 2 from pymongo import MongoClient 3 4 try: 5 uri = "<connection string URI>" 6 client = MongoClient(uri) 7 8 database = client["<database name>"] 9 collection = database["<collection name>"] 10 11 # start example code here 12 13 # end example code here 14 15 client.close() 16 17 except Exception as e: 18 raise Exception( 19 "The following error occurred: ", e)
単一フィールド インデックス
result = collection.create_index("<field name>") print(f'Index created: {result}')
単一フィールドインデックスの詳細については、「単一フィールド インデックスガイド」を参照してください。
複合インデックス
result = collection.create_index([ ("<field name one>", pymongo.ASCENDING), ("<field name two>", pymongo.ASCENDING) ]) print(f"Index created: {result}")
複合インデックスの詳細については、「複合インデックス」のガイドを参照してください。
Multikey Index
result = collection.create_index("<array field name>") print(f'Index created: {result}')
マルチキー インデックスの詳細については、「 マルチキーインデックス」のガイドを参照してください。
Atlas Search インデックス
Atlas SearchAtlas SearchAtlas Search インデックスの詳細については、「 Atlas Search とベクトル検索インデックスのガイド」を参照してください。
検索インデックスを作成
index = { "definition": { "mappings": { "dynamic": True } }, "name": "<index name>", } collection.create_search_index(index)
検索インデックスの作成の詳細については、「 検索インデックスの作成 」ガイドを参照してください。
検索インデックスをリストする
results = list(collection.list_search_indexes()) print('Existing search indexes:\n') for index in results: print(index)
検索インデックスをリストする方法について詳しくは、「 検索インデックスをリストする 」のガイドを参照してください。
検索インデックスを更新
new_index = { "definition": { "mappings": { "dynamic": True } }, "name": "<index name>", } collection.update_search_index("<name of index to update>", new_index) print(f"Search index updated: {result}")
検索インデックスの更新について詳しくは、「 検索インデックスを更新する 」ガイドを参照してください。
検索インデックスを削除
collection.drop_index("<index name>") print(f"Search index deleted: {result}")
検索インデックスの削除の詳細については、「 検索インデックスの削除 」ガイドを参照してください。
Text Index
result = collection.create_index( [( "<field name>", "text")], default_language="english", weights={ "<field name>": 10 } ) print(f"Index created: {result}")
テキスト インデックスの詳細については、テキスト インデックスのガイドを参照してください。
地理空間インデックス
result = collection.create_index([("<GeoJSON object field>", "2dsphere")]) print(f'Index created: {result}')
地理空間インデックスの詳細については、「地理空間インデックス」のガイドを参照してください。
ユニークインデックス
result = collection.create_index("<field name>", unique=True) print(f"Index created: {result}")
一意なインデックスの詳細については、「一意なインデックス」のガイドを参照してください。
ワイルドカード インデックス
result = collection.create_index({"$**": pymongo.ASCENDING}) print(f'Index created: {result}')
ワイルドカード インデックスの詳細については、「ワイルドカード インデックス」のガイドを参照してください。
クラスター化されたインデックス
collection = database.create_collection("<collection name>", clusteredIndex={ "key": {"_id": 1}, "unique": True })
ワイルドカード インデックスの詳細については、「クラスター化されたインデックス」のガイドを参照してください。
インデックスを削除する
collection.drop_index("<index_name>")
インデックスの削除の詳細については、「 インデックスとの連携 」ガイドの「 インデックスの削除 」を参照してください。