📜  如何使用Python为 MongoDB 集合创建索引?

📅  最后修改于: 2022-05-13 01:55:10.366000             🧑  作者: Mango

如何使用Python为 MongoDB 集合创建索引?

先决条件: MongoDB Python基础

本文重点介绍 PyMongo 库的 create_index() 方法。索引可以高效地执行查询请求,因为它以一种快速且易于遍历的方式存储数据。

让我们从 create_index() 方法开始:

  1. 导入 PyMongo 模块:使用以下命令导入 PyMongo 模块:
    from pymongo import MongoClient

    如果您的机器上尚未安装 MongoDB,您可以参考指南:使用Python安装 MongoDB 的指南

  2. 创建连接:现在我们已经导入了模块,是时候建立与 MongoDB 服务器的连接了,大概是在 localhost(主机名)的端口 27017(端口号)上运行。
    client = MongoClient(‘localhost’, 27017)
  3. 访问数据库:因为与 MongoDB 服务器的连接已建立。我们现在可以创建或使用现有的数据库。
    mydatabase = client.name_of_the_database
  4. 访问集合:我们现在使用以下语法从数据库中选择集合:
    collection_name = mydatabase.name_of_collection
  5. 创建索引:现在我们将使用 create_index()函数创建索引。

    句法:

    create_index(keys, session=None, **kwargs)

例子:

样本数据库:

python-mongodb-insert-one-21

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

输出:

MongoDB外壳:

python-mongodb-index

它会引发DuplicateKeyError ,因为已经存在一个带有 Roll No 1008的文档,并且我们正在尝试插入另一个具有相同 Roll No 的文档。发生此错误是因为我们在字段 Roll No 上创建了一个索引并将其标记为唯一。