← К оглавлению занятия
⚡ Кратко: суть занятия
Summary 16 повторяет создание коллекций, insertMany, удаление и редактирование документов.
Главная практическая тема недели — aggregation pipeline.
Коллекция users используется для вставки 4 документов и обновления возраста через $inc.
Коллекция movies тренирует sort и project: показать title/year и скрыть _id.
Домашнее задание orders повторяет countDocuments, sort, limit, $in и $group.
В $group можно считать сумму покупок по customer через $sum: "$amount".
Для уникальных городов Ольги сначала нужен $match по customer, затем $group по city.
Топ-3 ошибки: путать find().count() и countDocuments(), забывать _id: 0 в project, ставить $group до нужного $match.
Рабочие примеры
Создание users
db.users_name.insertMany([
{ id: 1, name: "Анатолий", age: 28, gender: "m" },
{ id: 2, name: "Светлана", age: 25, gender: "f" },
{ id: 3, name: "Никита", age: 33, gender: "m" },
{ id: 4, name: "Ольга", age: 22, gender: "f" }
])
После вставки можно проверять фильтры по age и gender.
Увеличить возраст на 3
db.users_name.updateMany({}, { $inc: { age: 3 } })
Пустой фильтр {} означает все документы.
Названия и годы фильмов
{
sort: { year: 1 },
project: { _id: 0, title: 1, year: 1 }
}
В Compass это можно задать в отдельных полях Sort и Project.
Сколько покупок совершено
db.orders_name.countDocuments()
Для исходного набора orders результат 6.
Сумма покупок по customer
db.orders_name.aggregate([
{ $group: { _id: "$customer", total: { $sum: "$amount" } } }
])
Каждый customer становится отдельной группой.