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

✅ Решения

📁 Блок: MongoDB / Коллекции / Изменение данных ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя

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

Занятие 61 впервые переводит работу из режима чтения в режим редактирования.

Редактировать нужно в базе ich_edit, потому что у учебного пользователя права на изменение ограничены этой базой.

Коллекция создаётся через db.createCollection(), а несколько документов вставляются через insertMany([...]).

В Compass при вставке нескольких документов берётся содержимое квадратных скобок из insertMany.

Фильтры find() закрепляются на собственной коллекции users_NAME.

deleteMany() удаляет множество документов по фильтру.

updateMany() меняет множество документов; $inc увеличивает числовое поле.

Топ-3 ошибки: забыть заменить NAME, вставить объект вместо массива при нескольких документах, выполнить deleteMany() без фильтра.

Пошаговые решения

Решение Создание

use ich_edit
db.createCollection("users_NAME")

NAME нужен для уникальности коллекции.

Решение Вставка

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

Квадратные скобки означают массив документов.

Решение Задание 1

db.users_NAME.find({ gender: "f" })

Фильтр по точному значению поля gender.

Решение Задание 2

db.users_NAME.find({ $or: [{ gender: "f" }, { age: { $gt: 30 } }] })

$or возвращает Светлану, Ольгу и Никиту.

Решение Задание 3

db.users_NAME.find({ name: { $in: ["Анатолий", "Дмитрий", "Ольга", "Семен"] } })

$in проверяет попадание имени в список.

Решение Задание 4

db.users_NAME.find({ id: 3 })

id в учебных документах хранится числом.

Решение Задание 5

db.users_NAME.find({ age: { $gte: 30, $lte: 40 } })

Оба условия диапазона записаны внутри одного поля.

Решение Удаление

db.users_NAME.deleteMany({ gender: "m" })

Удаляются все документы с gender m.

Решение Обновление

db.users_NAME.updateMany({ age: { $exists: true } }, { $inc: { age: 3 } })

$inc прибавляет 3 к age.

Решение Экспорт

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

В Compass это настройки сортировки и проекции перед экспортом.