Docs 菜单
Docs 主页
/ / /
pymongo

使用索引优化查询

在此页面上

  • Overview
  • 示例应用程序
  • 单字段索引
  • 复合索引
  • Multikey Index
  • Atlas Search 索引
  • 创建Atlas Search索引
  • 搜索索引列表
  • 更新搜索索引
  • 删除Atlas Search索引
  • Text Index
  • 地理空间索引
  • 唯一索引
  • 通配符索引(Wildcard Index)
  • 聚集索引
  • 删除索引

在此页面上,您可以查看可复制的代码示例,这些示例展示了如何使用可与 PyMongo 一起使用的常见索引类型。

提示

要了解有关使用索引的更多信息,请参阅使用索引指南。要了解有关此页面上显示的任何索引的更多信息,请参阅每个部分中提供的链接。

要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将代码示例中的所有占位符(例如 <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)

要了解有关创建 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索引指南。

collection.drop_index("<index name>")
print(f"Search index deleted: {result}")

要了解有关删除Atlas Search索引的更多信息,请参阅删除Atlas Search索引指南。

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

要了解有关通配符索引的更多信息,请参阅Clustered Indexes指南。

collection.drop_index("<index_name>")

要了解有关删除索引的更多信息,请参阅《使用索引》指南中的删除索引。

后退

监控数据变化