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