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

📖 Теория

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

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

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

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

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

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

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

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

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

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

Ключевые идеи

Почему нужна отдельная база ich_edit

Источник подчёркивает: пользователь ich видит все коллекции, но права на редактирование есть только в базе ich_edit у пользователя ich_edit. Поэтому любые insert/update/delete выполняются там.

Это важное разделение безопасности: чтение учебных данных и изменение тестовых данных не должны смешиваться.

Создание коллекции и вставка документов

В mongosh сначала переключаются на базу командой use ich_edit, затем создают коллекцию db.createCollection("users_NAME"). NAME заменяется на имя студента, чтобы коллекции разных студентов не конфликтовали.

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

Изменение и удаление

deleteMany(filter) удаляет все документы, которые подходят под фильтр. Это мощная команда: перед удалением полезно выполнить find(filter) и убедиться, что выборка правильная.

updateMany(filter, update) применяет изменение ко всем найденным документам. В источнике используется $inc, чтобы добавить 3 к возрасту каждого пользователя, у которого есть поле age.

Экспорт и импорт

В Compass можно отфильтровать и спроецировать данные, экспортировать результат в JSON, затем импортировать файл в новую коллекцию movies_NAME.

Проверить по документации: интерфейс MongoDB Compass и набор доступных стадий зависит от версии Compass и MongoDB Server.