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

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

Введение

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

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

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

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

Эти навыки станут основой вашего пути в изучении MongoDB. Давайте начнем!

Нажмите кнопку Continue ниже, чтобы начать лабораторию.

Запуск оболочки MongoDB

Прежде чем запускать MongoDB, нам нужно открыть терминал в вашей виртуальной машине LabEx. Есть два способа сделать это:

  1. Интерфейс терминала: Мы рекомендуем интерфейс терминала из-за его скорости и простоты использования. Это интерфейс по умолчанию для лабораторий, связанных с MongoDB.

    открыть терминал в интерфейсе терминала
  2. Десктопный интерфейс: Если вы предпочитаете более традиционный опыт работы с терминалом, вы можете использовать десктопный интерфейс. Посмотрите на левую сторону вашего рабочего стола и нажмите на значок с надписью Xfce Terminal.

    открыть терминал в десктопном интерфейсе

Оба метода работают одинаково хорошо — это просто разные способы доступа к одной и той же лабораторной среде. Выберите тот, который вам больше нравится!

Теперь давайте запустим оболочку MongoDB (MongoDB shell), которая похожа на панель управления нашей базой данных. Думайте об оболочке как о способе напрямую общаться с 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 хранятся в коллекциях (collections), которые представляют собой группы документов. Документ — это набор пар ключ-значение. Давайте создадим коллекцию 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() является мощным инструментом для извлечения именно тех данных, которые вам нужны.

Удаление документов

Наконец, давайте научимся удалять документы из коллекции.

Чтобы удалить один документ, соответствующий определенному условию, используйте метод deleteOne(). Удалим книгу с названием "MongoDBBasics":

db.books.deleteOne({ title: "MongoDBBasics" })

Оболочка подтвердит, что один документ был удален:

{ acknowledged: true, deletedCount: 1 }

Чтобы удалить несколько документов, соответствующих условию, используйте deleteMany(). Этот метод поддерживает операторы запросов для создания более сложных условий. Например, $lt означает "меньше чем" (less than).

Удалим все книги, опубликованные до 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().
  • Удалять документы с помощью deleteOne() и deleteMany().

Эти фундаментальные навыки являются основой для разработки мощных приложений с использованием MongoDB. Практика — ключ к успеху, поэтому не стесняйтесь экспериментировать с изученными командами.