Введение
Добро пожаловать в LabEx! Это ваша первая лабораторная работа с MongoDB. Если вы раньше не работали с базами данных, не волнуйтесь — мы пошагово проведём вас через весь процесс.
Сначала разберёмся, что такое MongoDB. MongoDB — это система управления базами данных, которая хранит данные в гибком формате документов. В отличие от обычных электронных таблиц, MongoDB позволяет организовывать данные более естественным образом — примерно так же, как вы организуете файлы по папкам на компьютере.
В этой лабораторной работе вы научитесь:
- Запускать оболочку MongoDB и понимать, что это такое
- Создавать свою первую базу данных и коллекцию
- Добавлять данные в MongoDB и просматривать их
- Выполнять запросы, обновлять и удалять данные
Эти навыки станут основой для дальнейшего изучения MongoDB. Начнём!
Нажмите расположенную ниже кнопку Continue, чтобы начать лабораторную работу.
Запуск оболочки MongoDB
На этом шаге вы откроете терминал и запустите оболочку MongoDB в виртуальной машине LabEx.
Мы рекомендуем Terminal Interface благодаря скорости и простоте использования. Это интерфейс по умолчанию для лабораторных работ, связанных с MongoDB.

Если вы предпочитаете более привычный интерфейс терминала, используйте Desktop Interface. Найдите в левой части рабочего стола значок Xfce Terminal и нажмите его.

Оба способа работают одинаково — они лишь предоставляют разные варианты доступа к одной и той же лабораторной среде. Выберите удобный для себя способ.
Теперь запустим оболочку MongoDB — своего рода панель управления базой данных. Оболочка позволяет напрямую взаимодействовать с MongoDB: вы вводите команды, а MongoDB возвращает ответы.
Чтобы запустить оболочку MongoDB, введите в терминале следующую команду и нажмите Enter:
mongosh
Вы увидите сообщение о подключении, которое означает, что вы успешно подключились к локальному экземпляру MongoDB. Вывод будет похож на следующий:
Current Mongosh Log ID: 65a7f3e5f1a1234567890abc
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+x.y.z
Using MongoDB: X.X.X
Using Mongosh: X.X.X
For mongosh info, see: https://docs.mongodb.com/mongodb-shell/
test>
Приглашение test> показывает, что вы находитесь внутри оболочки mongosh и подключены к базе данных test, используемой по умолчанию.
Теперь выведем список всех существующих баз данных на сервере. Введите следующую команду в оболочке mongosh:
show dbs
Вы увидите список баз данных по умолчанию, которые MongoDB использует для внутренних целей:
admin 40.00 KiB
config 112.00 KiB
local 40.00 KiB
На следующем шаге вы создадите собственную базу данных.
Создание базы данных и добавление документа
На этом шаге вы создадите базу данных и добавите свой первый документ. В MongoDB не нужно создавать базу данных вручную. Она создаётся автоматически при первой записи данных. Чтобы переключиться на новую базу данных, используйте команду use.
Переключимся на базу данных с именем mylab_database. В оболочке mongosh введите:
use mylab_database
Оболочка ответит сообщением switched to db mylab_database. Хотя база данных ещё не создана, теперь вы работаете в её контексте.
MongoDB хранит данные в коллекциях — наборах документов. Документ представляет собой набор пар «ключ–значение». Создадим коллекцию users, добавив в неё первый документ.
Используйте метод insertOne(), чтобы добавить один документ в коллекцию users:
db.users.insertOne({ name: "JohnDoe", age: 30, city: "NewYork" })
Разберём эту команду:
db: текущая база данных (mylab_database).users: имя коллекции. Она будет создана автоматически.insertOne(): метод для добавления одного документа.{...}: сам документ с такими полями, какname,ageиcity.
MongoDB подтвердит добавление и вернёт уникальный _id, созданный для документа:
{
acknowledged: true,
insertedId: ObjectId("...")
}
ObjectId — это уникальный идентификатор, который автоматически назначается каждому документу.
Теперь проверим, что документ добавлен. Используйте метод find(), чтобы просмотреть все документы в коллекции users:
db.users.find()
В выводе отобразится добавленный документ:
[
{
_id: ObjectId("..."),
name: 'JohnDoe',
age: 30,
city: 'NewYork'
}
]
Добавление нескольких документов
На этом шаге вы добавите несколько документов одновременно. Метод insertMany() принимает в качестве аргумента массив документов.
Создадим новую коллекцию books и добавим в неё три книги одной командой.
db.books.insertMany([
{ title: "MongoDBBasics", author: "JaneSmith", year: 2023 },
{ title: "PythonProgramming", author: "JohnDoe", year: 2022 },
{ title: "DataScienceHandbook", author: "AliceJohnson", year: 2021 }
])
Обратите внимание на квадратные скобки [ ], которые обозначают массив. Каждый объект {...} внутри массива является отдельным документом.
MongoDB подтвердит выполнение операции и вернёт значения _id для всех добавленных документов:
{
acknowledged: true,
insertedIds: {
'0': ObjectId("..."),
'1': ObjectId("..."),
'2': ObjectId("...")
}
}
Чтобы просмотреть все документы в новой коллекции books, снова используйте метод find():
db.books.find()
В выводе будут перечислены все три добавленных документа книг.
Запрос и подсчёт документов
На этом шаге вы получите и подсчитаете добавленные данные.
Чтобы подсчитать общее количество документов в коллекции, используйте метод countDocuments(). Подсчитаем книги в коллекции books:
db.books.countDocuments()
Команда вернёт общее количество документов:
3
Чтобы найти определённые документы, передайте фильтр запроса методу find(). Фильтр запроса — это документ, задающий условия поиска.
Например, чтобы найти все книги, написанные автором "JohnDoe", выполните следующий запрос:
db.books.find({ author: "JohnDoe" })
Фильтр { author: "JohnDoe" } сообщает MongoDB, что нужно вернуть только документы, в которых поле author имеет значение "JohnDoe".
Можно также выполнять запросы по числовым значениям. Найдём все книги, опубликованные в 2023 году:
db.books.find({ year: 2023 })
Этот запрос вернёт книгу "MongoDBBasics". Метод find() позволяет получать именно те данные, которые вам нужны.
Обновление и удаление документов
На этом шаге вы обновите и удалите документы из коллекции.
Чтобы изменить существующий документ, используйте метод updateOne(). Он принимает фильтр, выбирающий документ, и документ обновления, описывающий изменение. Оператор $set изменяет только указанное поле.
Изменим год публикации книги "PythonProgramming" с 2022 на 2024:
db.books.updateOne(
{ title: "PythonProgramming" },
{ $set: { year: 2024 } }
)
MongoDB подтвердит, что нашла и изменила один документ:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
Проверьте обновлённый документ:
db.books.find({ title: "PythonProgramming" })
Теперь в результате для книги "PythonProgramming" будет указано year: 2024.
Далее удалим документы из коллекции.
Чтобы удалить один документ, соответствующий определённому условию, используйте метод deleteOne(). Удалим книгу с названием "MongoDBBasics":
db.books.deleteOne({ title: "MongoDBBasics" })
Оболочка подтвердит удаление одного документа:
{ acknowledged: true, deletedCount: 1 }
Чтобы удалить несколько документов, соответствующих условию, используйте deleteMany(). Этот метод поддерживает операторы запросов, с помощью которых можно задавать более сложные условия. Например, $lt означает «меньше чем».
Удалим все книги, опубликованные до 2022 года:
db.books.deleteMany({ year: { $lt: 2022 } })
Эта команда удаляет все документы, в которых значение поля year меньше 2022. В нашем случае будет удалена книга "DataScienceHandbook".
Чтобы проверить, какие книги остались, в последний раз выполните команду find():
db.books.find()
В коллекции должна остаться только книга "PythonProgramming".
Теперь вы потренировались выполнять базовые CRUD-операции (Create, Read, Update, Delete — создание, чтение, обновление и удаление) в MongoDB. Чтобы выйти из оболочки mongosh, введите:
exit
Итоги
Поздравляем с завершением первой лабораторной работы с MongoDB! Вы успешно изучили и отработали основные операции управления данными в базе данных MongoDB.
В этой лабораторной работе вы научились:
- Запускать оболочку
mongoshдля взаимодействия с сервером MongoDB. - Использовать команду
useдля переключения на базу данных. - Добавлять один и несколько документов с помощью
insertOne()иinsertMany(). - Получать документы с помощью
find()— с фильтрами запросов и без них. - Подсчитывать документы в коллекции с помощью
countDocuments(). - Обновлять документ с помощью
updateOne()и оператора$set. - Удалять документы с помощью
deleteOne()иdeleteMany().
Эти базовые навыки служат основой для создания мощных приложений с MongoDB. Важна практика, поэтому вы можете продолжить эксперименты с изученными командами.

