← К оглавлению занятия

📖 Теория

📁 Блок: MongoDB / Повторение ⏱️ Время изучения: ~60 мин 🎯 Сложность: Повторение

⚡ Кратко: суть занятия

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.

Разбор темы

Повторение недели

Источник собирает темы предыдущих занятий: создание и наполнение коллекции, удаление документов, редактирование через $inc, экспорт/импорт, aggregation pipeline.

Коллекция users

Мини-набор users удобен для проверки базовых операций. Четыре документа достаточно, чтобы увидеть insertMany и массовое обновление возраста.

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" }
])

Редактирование через $inc

$inc увеличивает числовое поле на заданное значение. В задании возраст каждого пользователя увеличивается на 3.

db.users_name.updateMany({}, { $inc: { age: 3 } })

Project и Sort

Задание с movies показывает типичный pipeline: сортируем по году и выбираем только нужные поля.

{
  sort: { year: 1 },
  project: { _id: 0, title: 1, year: 1 }
}

Домашнее задание orders

Коллекция orders тренирует переход от простых подсчётов к группировке: countDocuments для количества, aggregate+$group для сумм по покупателям.