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']
- Здесь мы создаем индекс с именем student_id используя метод create_index(). Это приводит к появлению двух индексов в документах _id и student_id.
- С помощью 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 }
Это поднимает вопрос Ошибка дублирования поскольку уже существует документ с student_id 873, и мы пытаемся вставить другой документ с тем же идентификатором студента. Эта ошибка возникает из-за того, что мы создали индекс в поле student_id и отметили его как уникальный.