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

💻 Примеры

📁 Блок: 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")

Команда use выбирает базу, createCollection создаёт пустую коллекцию.

Вставка четырёх пользователей

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

insertMany получает массив; каждый элемент массива — отдельный документ.

Женщины или старше 30

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

$or нужен, потому что достаточно одного из условий.

Увеличение возраста

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

Фильтр выбирает документы с age, а $inc изменяет числовое поле.