Урок 84. MongoDB и Python. Модули

📁 Блок: Базы данных и модули ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#close #find #sort #list #in #import #from

⚡ Кратко: главные команды

  • pip install pymongo — установка библиотеки.
  • MongoClient(...) — подключение к серверу MongoDB.
  • client.admin.command("ping") — проверка подключения.
  • db = client["db_name"] — выбор базы данных.
  • collection = db["collection_name"] — выбор коллекции.
  • insert_one(doc), insert_many(list) — вставка документов.
  • find_one(filter), find(filter) — чтение документов.
  • update_one(filter, {"$set": {...}}), update_many(...) — обновление.
  • delete_one(filter), delete_many(filter) — удаление.
  • client.close() — закрытие соединения.
  • import module, from module import name — импорт модулей.

🔖 Справочник по PyMongo

Подключение

Команда / параметрОписаниеПример
MongoClient(uri) Создаёт клиент для подключения к MongoDB client = MongoClient("mongodb://user:pass@host/db")
client.admin.command("ping") Проверяет доступность сервера client.admin.command("ping")
client["db_name"] Возвращает объект базы данных db = client["ich_edit"]
db["collection_name"] Возвращает объект коллекции products = db["products"]
client.close() Закрывает соединение с сервером client.close()

CRUD-методы коллекции

МетодОписаниеПример
insert_one(document) Вставляет один документ result = products.insert_one({"name": "Pen"})
insert_many(documents) Вставляет список документов result = products.insert_many([{...}, {...}])
find_one(filter=None, projection=None) Возвращает первый документ или None doc = products.find_one({"name": "Pen"})
find(filter=None, projection=None) Возвращает курсор с документами docs = products.find({"price": {"$lt": 5}})
update_one(filter, update) Обновляет первый подходящий документ products.update_one({"name": "Pen"}, {"$set": {"price": 2}})
update_many(filter, update) Обновляет все подходящие документы products.update_many({}, {"$inc": {"price": 1}})
delete_one(filter) Удаляет первый подходящий документ products.delete_one({"name": "Pen"})
delete_many(filter) Удаляет все подходящие документы products.delete_many({"price": {"$lt": 1}})

Работа с курсором

МетодОписаниеПример
cursor.sort(key, direction) Сортирует результаты. 1 — по возрастанию, -1 — по убыванию products.find().sort("price", -1)
cursor.skip(n) Пропускает первые n документов products.find().skip(5)
cursor.limit(n) Ограничивает результат n документами products.find().limit(10)
list(cursor) Преобразует курсор в список docs = list(products.find())

Операторы фильтрации

ОператорЗначениеПример
$eqРавно{"name": {"$eq": "Pen"}}
$neНе равно{"name": {"$ne": "Pen"}}
$gtБольше{"price": {"$gt": 5}}
$gteБольше или равно{"price": {"$gte": 5}}
$ltМеньше{"price": {"$lt": 5}}
$lteМеньше или равно{"price": {"$lte": 5}}
$inВходит в список{"name": {"$in": ["Pen", "Pencil"]}}
$regexПоиск по регулярному выражению{"name": {"$regex": "^P"}}
⚠️ Проверить по документации: полный список операторов запросов см. в документации MongoDB. В лекции упоминаются только основные операторы сравнения.

Операторы обновления

ОператорЗначениеПример
$setУстанавливает значение поля{"$set": {"price": 10}}
$incУвеличивает числовое поле{"$inc": {"stock": -1}}
$unsetУдаляет поле{"$unset": {"old_field": ""}}
$mulУмножает числовое поле{"$mul": {"price": 1.2}}
⚠️ Проверить по документации: в лекции рассматриваются только $set и $inc. Остальные операторы обновления см. в документации MongoDB.

Импорт модулей

КонструкцияОписаниеПример
import module Импортирует весь модуль import math_utils
from module import name Импортирует конкретный объект from math_utils import maximum
from module import * Импортирует все публичные имена from math_utils import *
from .module import name Относительный импорт внутри пакета from .text_utils import count_words

Основные исключения

ИсключениеКогда возникает
pymongo.errors.ConnectionFailureОшибка подключения к серверу MongoDB
pymongo.errors.OperationFailureОшибка выполнения запроса или недостаточно прав
pymongo.errors.DuplicateKeyErrorПопытка вставить документ с уже существующим _id
pymongo.errors.PyMongoErrorБазовый класс для всех исключений pymongo
⚠️ Проверить по документации: полная иерархия исключений и их параметры описаны в официальной документации PyMongo.