Docs Menu

Docs Homeアプリケーションの開発Python ドライバーPyMongo

インデックスによるクエリの最適化

項目一覧

  • Overview
  • サンプル アプリケーション
  • 単一フィールド インデックス
  • 複合インデックス
  • Multikey Index
  • Atlas Search インデックス
  • 検索インデックスを作成
  • 検索インデックスをリストする
  • 検索インデックスを更新
  • 検索インデックスを削除
  • Text Index
  • 地理空間インデックス
  • ユニークインデックス
  • ワイルドカード インデックス
  • クラスター化されたインデックス
  • インデックスを削除する

このページでは、PyMongo で使用できる一般的なタイプのインデックスの操作方法を示すコピー可能なコード例があります。

Tip

インデックスの操作の詳細については、「インデックスとの操作 」ガイドを参照してください。 このページに表示されているインデックスの詳細については、各セクションに提供されているリンクを参照してください。

このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string URI>など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。

次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。

  1. PyMongo がインストールされていることを確認します。

  2. 次のコードをコピーし、新しい.pyファイルに貼り付けます。

  3. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

1import pymongo
2from pymongo import MongoClient
3
4try:
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
17except 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}")

複合インデックスの詳細については、「複合インデックス」のガイドを参照してください。

result = collection.create_index("<array field name>")
print(f'Index created: {result}')

マルチキー インデックスの詳細については、「 マルチキーインデックス」のガイドを参照してください。

Atlas 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}")

検索インデックスの削除の詳細については、「 検索インデックスの削除 」ガイドを参照してください。

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>")

インデックスの削除の詳細については、「 インデックスとの連携 」ガイドの「 インデックスの削除 」を参照してください。

← カーソルからデータにアクセスする