如何使用Python为 MongoDB 集合创建索引?
先决条件: MongoDB Python基础
本文重点介绍 PyMongo 库的 create_index() 方法。索引可以高效地执行查询请求,因为它以一种快速且易于遍历的方式存储数据。
让我们从 create_index() 方法开始:
- 导入 PyMongo 模块:使用以下命令导入 PyMongo 模块:
from pymongo import MongoClient
如果您的机器上尚未安装 MongoDB,您可以参考指南:使用Python安装 MongoDB 的指南
- 创建连接:现在我们已经导入了模块,是时候建立与 MongoDB 服务器的连接了,大概是在 localhost(主机名)的端口 27017(端口号)上运行。
client = MongoClient(‘localhost’, 27017)
- 访问数据库:因为与 MongoDB 服务器的连接已建立。我们现在可以创建或使用现有的数据库。
mydatabase = client.name_of_the_database
- 访问集合:我们现在使用以下语法从数据库中选择集合:
collection_name = mydatabase.name_of_collection
- 创建索引:现在我们将使用 create_index()函数创建索引。
句法:
create_index(keys, session=None, **kwargs)
例子:
样本数据库:
# Python program to demonstrate
# create_index() method
# Importing Library
from pymongo import MongoClient, ASCENDING
# Connecting to MongoDB server
# client = MongoClient('host_name', 'port_number')
client = MongoClient('localhost', 27017)
# Connecting to the database named
# GFG
mydatabase = client.GFG
# Accessing the collection named
# gfg_collection
mycollection = mydatabase.Student
mycollection.create_index('Roll No', unique = True)
# Inserting into Database
mycollection.insert_one({'_id':8 ,
'name': 'Deepanshu',
'Roll No': '1008',
'Branch': 'IT'})
# Inserting with the same Roll no again.
# As the Roll no field is the index and
# is set to unique it will through the error.
mycollection.insert_one({'_id':9 ,
'name': 'Hitesh',
'Roll No': '1008',
'Branch': 'CSE'})
输出:
DuplicateKeyError Traceback (most recent call last) DuplicateKeyError: E11000 duplicate key error collection: GFG.Student index: Roll No_1 dup key: { : “1008” }
36 ‘name’: ‘Hitesh’,
37 ‘Roll No’: ‘1008’,
—> 38 ‘Branch’: ‘CSE’})
MongoDB外壳:
它会引发DuplicateKeyError
,因为已经存在一个带有 Roll No 1008
的文档,并且我们正在尝试插入另一个具有相同 Roll No 的文档。发生此错误是因为我们在字段 Roll No 上创建了一个索引并将其标记为唯一。