Ваша первая лабораторная работа с MongoDB

MongoDBBeginner
Практиковаться сейчас

Введение

Добро пожаловать в LabEx! Это ваша первая лабораторная работа с MongoDB. Если вы раньше не работали с базами данных, не волнуйтесь — мы пошагово проведём вас через весь процесс.

Сначала разберёмся, что такое MongoDB. MongoDB — это система управления базами данных, которая хранит данные в гибком формате документов. В отличие от обычных электронных таблиц, MongoDB позволяет организовывать данные более естественным образом — примерно так же, как вы организуете файлы по папкам на компьютере.

В этой лабораторной работе вы научитесь:

  1. Запускать оболочку MongoDB и понимать, что это такое
  2. Создавать свою первую базу данных и коллекцию
  3. Добавлять данные в MongoDB и просматривать их
  4. Выполнять запросы, обновлять и удалять данные

Эти навыки станут основой для дальнейшего изучения 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. Важна практика, поэтому вы можете продолжить эксперименты с изученными командами.