MongoDB - это многофункциональная база данных NoSQL, ориентированная на документы.

Если вы полный новичок в NoSQL, я рекомендую вам быстро взглянуть на мою статью о NoSQL, опубликованную ранее.

Сегодня я хотел поделиться некоторыми основными сведениями о командах MongoDB, такими как запросы, фильтрация данных, удаление, обновление и так далее.

Ладно, хватит разговоров, приступим к работе!

Конфигурация 🔧

Чтобы работать с MongoDB, сначала вам необходимо установить MongoDB на свой компьютер. Для этого посетите официальный центр загрузки и скачайте версию для вашей конкретной ОС. Здесь я использовал Windows.

После загрузки установки сервера сообщества MongoDB вы пройдете через процесс установки «далее после следующего». После этого перейдите на диск C, на который вы установили MongoDB. Перейдите в файлы программы и выберите каталог MongoDB.

C: -> Program Files -> MongoDB -> Server -> 4.0(version) -> bin

В каталоге bin вы найдете пару интересных исполняемых файлов.

  • монгод
  • монго

Поговорим об этих двух файлах.

mongod означает «демон Монго». mongod - это фоновый процесс, используемый MongoDB. Основная цель mongod - управлять всеми задачами сервера MongoDB. Например, прием запросов, ответ клиенту и управление памятью.

mongo - это оболочка командной строки, которая может взаимодействовать с клиентом (например, с системными администраторами и разработчиками).

Теперь давайте посмотрим, как мы можем запустить этот сервер. Чтобы сделать это в Windows, сначала вам нужно создать пару каталогов на вашем диске C. Откройте командную строку на диске C и сделайте следующее:

C:\> mkdir data/db
C:\> cd data
C:\> mkdir db

Назначение этих каталогов - MongoDB требует папки для хранения всех данных. Путь к каталогу данных MongoDB по умолчанию - /data/db на диске. Следовательно, необходимо, чтобы мы предоставляли эти каталоги вот так.

Если вы запустите сервер MongoDB без этих каталогов, вы, вероятно, увидите следующую ошибку:

После создания этих двух файлов снова перейдите в папку bin, которая есть в вашем каталоге mongodb, и откройте в ней свою оболочку. Выполните следующую команду:

mongod

Вуаля! Теперь наш сервер MongoDB запущен и работает! 😎

Для работы с этим сервером нам нужен посредник. Итак, откройте другое командное окно внутри папки привязки и выполните следующую команду:

mongo

После выполнения этой команды перейдите к оболочке, в которой мы выполнили команду mongod (которая является нашим сервером). В конце вы увидите сообщение «Соединение принято». Это означает, что наша установка и настройка прошли успешно!

Просто запустите оболочку mongo:

db

Настройка переменных среды

Чтобы сэкономить время, вы можете настроить переменные среды. В Windows это делается с помощью следующих меню:

Advanced System Settings -> Environment Variables -> Path(Under System Variables) -> Edit

Просто скопируйте путь к нашей папке bin и нажмите OK! В моем случае это C:\Program Files\MongoDB\Server\4.0\bin

Теперь все готово!

Работа с MongoDB

Существует множество графических интерфейсов пользователя (GUI) для работы с сервером MongoDB, например MongoDB Compass, Studio 3T и т. Д.

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

Но в этой статье мы будем использовать командную строку для выполнения нашей работы.

Теперь пришло время погрузиться в команды MongoDB, которые помогут вам использовать их в ваших будущих проектах.

  1. Откройте командную строку и введите mongod , чтобы запустить сервер MongoDB.

2. Откройте другую оболочку и введите mongo , чтобы подключиться к серверу базы данных MongoDB.

1. Поиск текущей базы данных, в которой вы находитесь.

db

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

2. Листинговые базы данных

show databases

Сейчас у меня четыре базы данных. Это: CrudDB, admin, config и local.

3. Перейти к конкретной базе данных

use <your_db_name>

Здесь я перешел к базе данных local. Вы можете проверить это, если попробуете команду db , чтобы распечатать текущее имя базы данных.

4. Создание базы данных

С РСУБД (системы управления реляционными базами данных) у нас есть базы данных, таблицы, строки и столбцы.

Но в базах данных NoSQL, таких как MongoDB, данные хранятся в формате BSON (двоичная версия JSON). Они хранятся в структурах, называемых «коллекциями».

В базах данных SQL они похожи на таблицы.

Хорошо, давайте поговорим о том, как мы создаем базу данных в оболочке mongo.

use <your_db_name>

Подождите, у нас была эта команда раньше! Почему я снова его использую ?!

На сервере MongoDB, если ваша база данных уже присутствует, с помощью этой команды можно будет перейти в вашу базу данных.

Но если базы данных еще нет, сервер MongoDB создаст ее за вас. Затем он перейдет к нему.

После создания новой базы данных выполнение команды show database не отобразит вашу недавно созданную базу данных. Это связано с тем, что до тех пор, пока в нем не будут какие-либо данные (документы), он не будет отображаться в вашем списке баз данных.

5. Создание коллекции

Перейдите во вновь созданную базу данных с помощью команды use .

Собственно, есть два способа создать коллекцию. Посмотрим и то, и другое.

Один из способов - вставить данные в коллекцию:

db.myCollection.insert({"name": "john", "age" : 22, "location": "colombo"})

Будет создана ваша коллекция myCollection , даже если коллекция не существует. Затем он вставит документ с name и age. Это коллекции без ограничений.

Второй способ показан ниже:

2.1 Создание коллекции без ограничения

db.createCollection("myCollection")

2.2 Создание закрытой коллекции

db.createCollection("mySecondCollection", {capped : true, size : 2, max : 2})

Таким образом вы создадите коллекцию без вставки данных.

«Ограниченная коллекция» имеет максимальное количество документов, которое предотвращает переполнение документов.

В этом примере я включил ограничение, установив для него значение true.

size : 2 означает ограничение в два мегабайта, а max: 2 устанавливает максимальное количество документов равным двум.

Теперь, если вы попытаетесь вставить более двух документов в mySecondCollection и воспользуетесь командой find (о которой мы скоро поговорим), вы увидите только последние вставленные документы. Имейте в виду, что это не означает, что был удален самый первый документ - он просто не отображается.

6. Вставка данных

Мы можем вставлять данные в новую коллекцию или в коллекцию, которая была создана ранее.

Есть три метода вставки данных.

  1. insertOne() используется для вставки только одного документа.
  2. insertMany() используется для вставки более одного документа.
  3. insert() используется для вставки любого количества документов.

Вот несколько примеров:

  • insertOne ()
db.myCollection.insertOne(i
      {
       "name": "navindu", 
       "age": 22
      }
)
  • insertMany ()
db.myCollection.insertMany([
      {
        "name": "navindu", 
        "age": 22
      },
      {
        "name": "kavindu", 
        "age": 20
      },
    
      {
        "name": "john doe", 
        "age": 25,
        "location": "colombo"
      }
])

Метод insert() аналогичен методу insertMany().

Также обратите внимание, что мы добавили новое свойство под названием location в документ для John Doe . Итак, если вы используете find ,, то вы увидите только для john doe свойство location прикреплено.

Это может быть преимуществом, когда речь идет о базах данных NoSQL, таких как MongoDB. Это обеспечивает масштабируемость.

7. Запрос данных

Вот как можно запросить все данные из коллекции:

db.myCollection.find()

Если вы хотите увидеть эти данные в более чистом виде, просто добавьте .pretty() в конец. Это отобразит документ в хорошо распечатанном формате JSON.

db.myCollection.find().pretty()

Подождите ... В этих примерах вы только что заметили что-то вроде _id? Как это туда попало?

Что ж, всякий раз, когда вы вставляете документ, MongoDB автоматически добавляет поле _id , которое однозначно идентифицирует каждый документ. Если вы не хотите, чтобы он отображался, просто выполните следующую команду

db.myCollection.find({}, _id: 0).pretty()

Далее мы рассмотрим фильтрацию данных.

Если вы хотите отобразить какой-то конкретный документ, вы можете указать одну деталь документа, которую вы хотите отобразить.

db.myCollection.find(
        {
          name: "john"
        }
)

Допустим, вы хотите отображать только людей младше 25 лет. Для этого можно использовать $lt.

db.myCollection.find(
         {
           age : {$lt : 25}
         }
)

Аналогично, $gt означает больше, $lte означает «меньше или равно», $gte означает «больше или равно» и $ne означает «не равно».

8. Обновление документов

Допустим, вы хотите обновить чей-то адрес или возраст, как вы могли бы это сделать? Что ж, посмотрите следующий пример:

db.myCollection.update({age : 20}, {$set: {age: 23}})

Первый аргумент - это поле документа, который вы хотите обновить. Здесь я указываю age для простоты. В производственной среде вы можете использовать что-то вроде поля _id.

Всегда лучше использовать что-то вроде _id для обновления уникальной строки. Это потому, что несколько полей могут иметь одинаковые age и name. Следовательно, если вы обновите одну строку, это повлияет на все строки с одинаковым именем и возрастом.

Если вы обновите документ таким образом, добавив в него новое свойство, например, location, документ будет обновлен с новым атрибутом. А если сделать find, то результат будет:

Если вам нужно удалить свойство из одного документа, вы можете сделать что-то вроде этого (допустим, вы хотите удалить age ):

db.myCollection.update({name: "navindu"}, {$unset: age});

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

Как я уже упоминал ранее, когда вы обновляете или удаляете документ, вам просто нужно указать _id, а не просто name, age, location.

db.myCollection.remove({name: "navindu"});

10. Удаление коллекции

db.myCollection.remove({});

Обратите внимание, это не равно методу drop(). Разница в том, что drop() используется для удаления всех документов внутри коллекции, а метод remove() используется для удаления всех документов вместе с самой коллекцией.

Логические операторы

MongoDB предоставляет логические операторы. На рисунке ниже представлены различные типы логических операторов.

Допустим, вы хотите отобразить людей, возраст которых меньше 25 лет, а также тех, кто находится в Коломбо. Что мы могли сделать?

Мы можем использовать оператор $and !

db.myCollection.find({$and:[{age : {$lt : 25}}, {location: "colombo"}]});

И последнее, но не менее важное: давайте поговорим об агрегировании .

Агрегирование

Краткое напоминание о том, что мы узнали о функциях агрегирования в базах данных SQL:

Проще говоря, агрегирование группирует значения из нескольких документов и каким-то образом суммирует их.

Представьте, что у нас есть студенты мужского и женского пола в коллекции recordBook, и мы хотим подсчитать общее количество каждого из них. Чтобы получить сумму мужчин и женщин, мы могли бы использовать агрегатную функцию $group.

db.recordBook.aggregate([
                {
                  $group : {_id : "$gender", result: {$sum: 1}}
                }  
]);

Подведение итогов

Итак, мы обсудили основы MongoDB, которые могут вам понадобиться в будущем для создания приложения. Надеюсь, вам понравилась эта статья… Спасибо, что прочитали!

Если у вас есть какие-либо вопросы относительно этого руководства, не стесняйтесь комментировать в разделе комментариев ниже или свяжитесь со мной в Facebook, Twitter или Instagram.

Увидимся в следующей статье! ❤️ ✌🏼

Ссылка на мою предыдущую статью: NoSQL