使用索引优化查询
在此页面上
Overview
在此页面上,您可以查看可复制的代码示例,这些示例展示了如何使用可与 PyMongo 一起使用的常见索引类型。
提示
要学习;了解有关使用索引的更多信息,请参阅使用索引指南。 要学习;了解有关此页面上显示的任何索引的更多信息,请参阅每个部分中提供的链接。
要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将代码示例中的所有占位符(例如 <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 Search要学习;了解有关Atlas Search索引的更多信息,请参阅Atlas Search和 Vector Search 索引指南。
创建Atlas Search索引
index = { "definition": { "mappings": { "dynamic": True } }, "name": "<index name>", } collection.create_search_index(index)
要了解有关创建 serach 索引的更多信息,请参阅创建Atlas Search索引指南。
搜索索引列表
results = list(collection.list_search_indexes()) print('Existing search indexes:\n') for index in results: print(index)
要了解有关列出Atlas Search索引的更多信息,请参阅列出Atlas Search索引指南。
更新搜索索引
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}")
要了解有关更新Atlas Search索引的更多信息,请参阅更新Atlas Search索引指南。
删除Atlas Search索引
collection.drop_index("<index name>") print(f"Search index deleted: {result}")
要了解有关删除Atlas Search索引的更多信息,请参阅删除Atlas Search索引指南。
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}")
要了解有关唯一索引的更多信息,请参阅唯一索引指南。
通配符索引(Wildcard Index)
result = collection.create_index({"$**": pymongo.ASCENDING}) print(f'Index created: {result}')
要了解有关通配符索引的更多信息,请参阅通配符索引指南。
聚集索引
collection = database.create_collection("<collection name>", clusteredIndex={ "key": {"_id": 1}, "unique": True })
要了解有关通配符索引的更多信息,请参阅Clustered Indexes指南。
删除索引
collection.drop_index("<index_name>")
要了解有关删除索引的更多信息,请参阅《使用索引》指南中的删除索引。