You are currently viewing Python MongoDB – Запрос create_index

Python MongoDB – Запрос create_index

MongoDB представляет собой базу данных, ориентированную на документы с открытым исходным кодом. MongoDB хранит данные в виде пар «ключ-значение» и является программой базы данных NoSQL. Термин NoSQL означает не реляционный.

Indexing (Индексация)

Индексирование помогает эффективно запрашивать документы. IT сохраняет значение определенного поля или набора полей, упорядоченных по значению поля, указанному в индексе.

PyMongo содержит функцию create_index() чтобы явно создать индекс. По умолчанию _id это единственный индекс, присутствующий в документе. Эта функция может принимать либо ключ, либо список пар (ключ, направление).

Синтаксис:

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

Давайте рассмотрим несколько примеров.

Пример 1:

Пример Базы данных:

from pymongo import MongoClient
	
	
# creation of MongoClient
client = MongoClient()
	
# Connect with the portnumber and host
client = MongoClient("mongodb://localhost:27017/")
	
# Access database
mydatabase = client['GFG']
	
# Access collection of the database
mycollection = mydatabase['College']

# Before Creating index
index_list = sorted(list(mycollection.index_information()))
print("Before Creating index")
print(index_list)

# Creating index
mycollection.create_index("student_id", unique = True)

# After Creating index
index_list = sorted(list(mycollection.index_information()))
print("\nAfter Creating index")
print(index_list)

Выход:

Before Creating index ['_id_'] After Creating index ['_id_', 'student_id_1'] 
  1. Здесь мы создаем индекс с именем student_id используя метод create_index (). Это приводит к появлению двух индексов в документах _id и student_id.
  2. С помощью index_information() метод, мы получаем все индексы в коллекции,

Пример 2:

from pymongo import MongoClient
	
	
# creation of MongoClient
client = MongoClient()
	
# Connect with the portnumber and host
client = MongoClient("mongodb://localhost:27017/")
	
# Access database
mydatabase = client['GFG']
	
# Access collection of the database
mycollection = mydatabase['College']

record = {'_id': 4,
		"student_id": 873,
		"name": "John",
		"section": "A"}

mycollection.insert_one(record)

Выход:

DuplicateKeyError Traceback (most recent call last)
<ipython-input-62-264f0e13db93> in <module>
16 record = {‘_id’: 4, “student_id”: 873, “name”: “John”, “section”: “A”}
17
—> 18 mycollection.insert_one(record)

DuplicateKeyError: E11000 duplicate key error collection: GFG.College index: student_id_1 dup key: { : 873 }

Это поднимает вопрос Ошибка дублирования поскольку уже существует документ с идентификатором студента 873, и мы пытаемся вставить другой документ с тем же идентификатором студента. Эта ошибка возникает из-за того, что мы создали индекс в поле student_id и отметили его как уникальный.