/
Flyer
/
library-api
Обзор
Документация
Войти
/
Flyer
/
library-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
task-6
database_comparison/mongodb/queries.py
53 строки
1 KB
Alex
Task 5: PostgreSQL vs MongoDB comparison
01 июн 2026, 23:48
01 июн 2026, 23:48
150d338
Код
Авторство
О чём код?
from pymongo import MongoClient client = MongoClient("mongodb://localhost:27017") db = client["library"] # 1. Выборка всех книг с информацией об авторе ($lookup) pipeline = [ { "$lookup": { "from": "authors", "localField": "author_id", "foreignField": "_id", "as": "author" } }, {"$unwind": "$author"}, {"$project": { "_id": 0, "title": 1, "year": 1, "author_name": "$author.name", "author_birth": "$author.birth_year" }} ] print("=== Все книги с автором ===") for doc in db.books.aggregate(pipeline): print(doc) # 2. Поиск книг после 1900 года print("\n=== Книги после 1900 ===") for doc in db.books.find({"year": {"$gt": 1900}}): print(doc) # 3. Агрегация: количество книг по автору (сначала $lookup, потом $group) pipeline_agg = [ { "$lookup": { "from": "authors", "localField": "author_id", "foreignField": "_id", "as": "author" } }, {"$unwind": "$author"}, {"$group": { "_id": "$author.name", "book_count": {"$sum": 1} }}, {"$sort": {"book_count": -1}} ] print("\n=== Количество книг по автору ===") for doc in db.books.aggregate(pipeline_agg): print(doc)