⚡ Кратко
📚 Подробно
⚡ Кратко: домашнее задание
Создай программу, которая подключается к MongoDB, выбирает базу ich_edit и коллекцию products_<group>_<name>.
Очисти коллекцию, добавь 3 товара с полями name, price, stock и выведи количество добавленных товаров.
Увеличь цену всех товаров на 20%, выведи количество обновлённых записей и список товаров с новыми ценами.
🏠 Домашнее задание из LMS
1
Добавление товаров
Создайте программу, которая подключается к MongoDB и:
выбирает базу ich_edit и коллекцию products_<your_group>_<your_full_name>;
очищает коллекцию перед началом;
добавляет 3 товара с полями: name, price, stock;
выводит сообщение о количестве добавленных товаров.
Пример вывода:
3 products added.
2
Увеличение цен
Продолжите предыдущую задачу. Теперь программа должна:
увеличить цену всех товаров на 20%;
вывести количество обновлённых записей;
затем вывести список всех товаров с новыми ценами.
Пример вывода:
3 products updated.
Notebook — 12.0
Pencil — 1.2
Bag — 30.0
🛠️ Подготовка окружения
Убедитесь, что установлен Python 3.
Установите библиотеку PyMongo:
pip install pymongo
Получите строку подключения к MongoDB (логин, пароль, хост и authSource).
Создайте новый файл, например homework_84.py, в VS Code.
📝 Пошаговое решение
1
Подключение и выбор коллекции
from pymongo import MongoClient
# main.py
client = MongoClient(
"mongodb://ich_editor:verystrongpassword"
"@mongo.itcareerhub.de/?readPreference=primary"
"&ssl=false&authMechanism=DEFAULT&authSource=ich_edit"
)
db = client["ich_edit"]
products = db["products_pd_ivanov"] # замените на свою группу и фамилию
2
Очистка и добавление товаров
products.delete_many({}) # очищаем коллекцию
items = [
{"name": "Notebook", "price": 10.00, "stock": 50},
{"name": "Pencil", "price": 1.00, "stock": 100},
{"name": "Bag", "price": 25.00, "stock": 30},
]
result = products.insert_many(items)
print(f"{len(result.inserted_ids)} products added.")
3
Увеличение цен на 20%
update_result = products.update_many(
{},
{"$mul": {"price": 1.2}}
)
print(f"{update_result.modified_count} products updated.")
print("\nUpdated products:")
for item in products.find({}, {"_id": 0, "name": 1, "price": 1}):
print(f"{item['name']} — {item['price']:.2f}")
⚠️ Проверить по документации: в официальном конспекте используется UPDATE products SET price = price * 1.2. В MongoDB эквивалент — оператор $mul. Можно также прочитать документы, изменить price в Python и использовать $set, но $mul делает это атомарно на сервере.
✅ Полное решение
# homework_84.py
from pymongo import MongoClient
def main() -> None:
client = MongoClient(
"mongodb://ich_editor:verystrongpassword"
"@mongo.itcareerhub.de/?readPreference=primary"
"&ssl=false&authMechanism=DEFAULT&authSource=ich_edit"
)
db = client["ich_edit"]
products = db["products_pd_ivanov"]
products.delete_many({})
items = [
{"name": "Notebook", "price": 10.00, "stock": 50},
{"name": "Pencil", "price": 1.00, "stock": 100},
{"name": "Bag", "price": 25.00, "stock": 30},
]
insert_result = products.insert_many(items)
print(f"{len(insert_result.inserted_ids)} products added.")
update_result = products.update_many({}, {"$mul": {"price": 1.2}})
print(f"{update_result.modified_count} products updated.")
print("\nUpdated products:")
for item in products.find({}, {"_id": 0, "name": 1, "price": 1}):
print(f"{item['name']} — {item['price']:.2f}")
client.close()
if __name__ == "__main__":
main()
🔍 Проверка в VS Code
Откройте файл homework_84.py в VS Code.
Проверьте, что виртуальное окружение активировано и установлен pymongo.
Запустите скрипт через терминал:
python homework_84.py
Убедитесь, что в консоли появились:
3 products added.
3 products updated.
список товаров с ценами, увеличенными на 20%.