в виде чего хранятся данные в mongodb
Основы MongoDB за 5 минут
Данная статья рассчитана на новичков, для тех кто хочет быстро изучить основы работы в MongoDB не влезая в документацию и туториалы на ютубе. Если в данной статье упущены некоторые темы, то автор посчитал, что человек неразбирающийся в теме сам будет в состоянии загуглить это + на протяжении всей статьи расставлены ссылки на документацию, дабы новичкам было легче ориентироваться.
Считается одним из классических примеров NoSQL-систем, использует JSON-подобные документы и схему базы данных. Данную базу данных применяют в веб-разработке, в частности, в рамках JavaScript-ориентированного стека MEAN, MEVN, MERN, которые часто используются веб-разработчиками, как любимые стеки технологий для создания приложений.
Установка
Скачать MongoDB можно с официального сайта для Linux, MacOS, Windows.
В Linux это также можно сделать с одной из следующих команд:
brew
Также для того чтобы взаимодействовать с БД нам потребуется шелл (MongoShell), который качается отдельно: https://www.mongodb.com/try/download/shell?jmp=docs
Основы
После успешной установки MongoDB и Mongoshell мы можем спокойно начать взаимодействовать с базой данных с помощью терминала. Достаточно просто ввести mongosh :
Более подробно о том, что будет ниже можно прочитать здесь
Всё дело в том, что в mongoDB не существует базы данных, покуда мы в неё что-то не поместим. Также, при обращении к определенным объектам (база данных, коллекция) mongoDB они меняют значение, только если существуют, а если не существуют, то они просто создаются. Давайте продемонстрируем принцип работы:
Для того чтобы создать новую базу данных (или использовать существующую) мы должны использовать ключевое слово use :
Давайте создадим новую коллекцию под названием customers (покупатели) и положим туда значение name: Daniil :
Далее мы можем посмотреть наши коллекции с помощью специального метода getCollectionNames :
Вуаля! У нас есть массив из наших коллекций и по такому же принципу (нахождения нужных нам методов) можно исследовать всю MongoDB, однако мне ещё есть что рассказать, продолжим.
Есть ещё сокращения команд, которые мы тоже можем использовать, например show collections вернёт нам то же самое, однако вид будет более читаемый для человека:
У нашей коллекции, к слову, тоже есть методы и свойства, но они немного другие:
Давайте добавим ещё нескольких покупателей с помощью метода insertMany() :
Итак, давайте заметим несколько моментов на скриншоте:
Метод insertMany() принимает массив элементов, а не просто элементы
MongoDB все равно прилегают ли ключи и их значения к скобкам или нет
Синтаксис MongoDB очень похож на синтаксис JavaScript, поэтому мы можем использовать все виды кавычек (двойные, одинарные, обратные).
Теперь давайте выведем двух пользователей (не важно каких) из нашего списка используем следующую команду db.customers.find().limit(2) :
Как мы видим мы вывели всего два объекта из нашей коллекции, однако что ещё мы можем делать с «найденными» объектами? А вот что:
Теперь давайте рассортируем наши значения с помощью метода sort() :
Можно сортировать значения и с помощью двух аргументов, но для начала давайте их добавим! Для того чтобы добавить значения к найденному элементу коллекции давайте применим функцию updateOne :
Теперь давайте применим метод updateMany() для того чтобы поменять значения у множества элементов, а затем перейдем к сортировке с двумя аргументами:
Теперь рассортируем массив с помощью двух аргументов:
MongoDB позволяет получить специфические поля из найденных объектов и не показывать другие (нам ненужные поля):
Также мы можем выводить наши значения и с помощью других методов, однако дочерние методы тоже будут другими:
В данном случае мы перевели наш массив данных в обычный массив. Позже мы сможем проводить над ним некие операции.
Более сложные запросы
Атомные операторы нужны для того, чтобы усложнять запросы. Популярные атомные операторы:
Некоторые из них мы рассмотрим ниже:
Как мы видим тут вывелись все записи, у которых поле age больше чем 15.
Добавим ещё один объект, у которого не будет поля age и проверим работу оператора exists :
Видим, что тут exists отработал верно и запись с name: ‘Denis’ не вывелась.
Стоит уточнить, что атомные операторы работают почти со всеми командами в MongoDB, вы можете совмещать их и создавать сложные запросы.
Все остальные команды по типу:
deleteOne (удаляет запись)
replaceOne (заменяет запись)
updateOne (обновляет запись)
и их братья-близнецы с Many работают точно так же. Вы можете попробовать узнать зачем они нужны просто создав базу данных с парой записей и поэксперементировать (в конце-концов так материал будет усваиваться достаточно быстро и осядет в вашей голове на долгое время), ведь всё что вам нужно вы уже узнали.
Если вам была интересна данная статья, то вы можете найти больше подобных статей в моем блоге. Надеюсь, что я приоткрыл завесу MongoDB и дал понять, что он уж точно не сложней, чем все остальные базы данных.
Введение в MongoDB
Что такое MongoDB
MongoDB реализует новый подход к построению баз данных, где нет таблиц, схем, запросов SQL, внешних ключей и многих других вещей, которые присущи объектно-реляционным базам данных.
Со времен динозавров было обычным делом хранить все данные в реляционных базах данных (MS SQL, MySQL, Oracle, PostgresSQL). При этом было не столь важно, а подходят ли реляционные базы данных для хранения данного типа данных или нет.
В отличие от реляционных баз данных MongoDB предлагает документо-ориентированную модель данных, благодаря чему MongoDB работает быстрее, обладает лучшей масштабируемостью, ее легче использовать.
Вся система MongoDB может представлять не только одну базу данных, находящуюся на одном физическом сервере. Функциональность MongoDB позволяет расположить несколько баз данных на нескольких физических серверах, и эти базы данных смогут легко обмениваться данными и сохранять целостность.
Формат данных в MongoDB
Одним из популярных стандартов обмена данными и их хранения является JSON (JavaScript Object Notation). JSON эффективно описывает сложные по структуре данные. Способ хранения данных в MongoDB в этом плане похож на JSON, хотя формально JSON не используется. Для хранения в MongoDB применяется формат, который называется BSON (БиСон) или сокращение от binary JSON.
BSON позволяет работать с данными быстрее: быстрее выполняется поиск и обработка. Хотя надо отметить, что BSON в отличие от хранения данных в формате JSON имеет небольшой недостаток: в целом данные в JSON-формате занимают меньше места, чем в формате BSON, с другой стороны, данный недостаток с лихвой окупается скоростью.
Кроссплатформенность
MongoDB написана на C++, поэтому ее легко портировать на самые разные платформы. MongoDB может быть развернута на платформах Windows, Linux, MacOS, Solaris. Можно также загрузить исходный код и самому скомпилировать MongoDB, но рекомендуется использовать библиотеки с офсайта.
Документы вместо строк
Если реляционные базы данных хранят строки, то MongoDB хранит документы. В отличие от строк документы могут хранить сложную по структуре информацию. Документ можно представить как хранилище ключей и значений.
Ключ представляет простую метку, с которым ассоциировано определенный кусок данных.
Коллекции
Если в традиционном мире SQL есть таблицы, то в мире MongoDB есть коллекции. И если в реляционных БД таблицы хранят однотипные жестко структурированные объекты, то в коллекции могут содержать самые разные объекты, имеющие различную структуру и различный набор свойств.
Репликация
Система хранения данных в MongoDB представляет набор реплик. В этом наборе есть основной узел, а также может быть набор вторичных узлов. Все вторичные узлы сохраняют целостность и автоматически обновляются вместе с обновлением главного узла. И если основной узел по каким-то причинам выходит из строя, то один из вторичных узлов становится главным.
Простота в использовании
Отсутствие жесткой схемы базы данных и в связи с этим потребности при малейшем изменении концепции хранения данных пересоздавать эту схему значительно облегчают работу с базами данных MongoDB и дальнейшим их масштабированием. Кроме того, экономится время разработчиков. Им больше не надо думать о пересоздании базы данных и тратить время на построение сложных запросов.
GridFS
Одной из проблем при работе с любыми системами баз данных является сохранение данных большого размера. Можно сохранять данные в файлах, используя различные языки программирования. Некоторые СУБД предлагают специальные типы данных для хранения бинарных данных в БД (например, BLOB в MySQL).
Работа с базой данных
Устройство базы данных. Документы
Всю модель устройства базы данных в MongoDB можно представить следующим образом:
Документ можно представить как объект, хранящий некоторую информацию. В некотором смысле он подобен строкам в реляционных субд, где строки хранят информацию об отдельном элементе. Например, типичный документ:
Ключи представляют строки. Значения же могут различаться по типу данных. В данном случае у нас почти все значения также представляют строковый тип, и лишь один ключ (company) ссылается на отдельный объект. Всего имеется следующие типы значений:
В отличие от строк документы могут содержать разнородную информацию. Так, рядом с документом, описанным выше, в одной коллекции может находиться другой объект, например:
Казалось бы разные объекты за исключением отдельных свойств, но все они могут находиться в одной коллекции.
Еще пара важных замечаний: в MongoDB запросы обладают регистрозависимостью и строгой типизацией. То есть следующие два документа не будут идентичны:
Если в первом случае для ключа age определена в качестве значения строка, то во втором случае значением является число.
Идентификатор документа
Данное поле должно иметь уникальное значение в рамках коллекции. И если мы попробуем добавить в коллекцию два документа с одинаковым идентификатором, то добавится только один из них, а при добавлении второго мы получим ошибку.
Если идентификатор не задан явно, то MongoDB создает специальное бинарное значение размером 12 байт. Это значение состоит из нескольких сегментов: значение типа timestamp размером 4 байта (которое представляет количество секунд с момента начала эпохи Unix), случайное число из 5 байт и счетчик из 3 байт, который инициализирован случайным числом. Такая модель построения идентификатора гарантирует с высокой долей вероятности, что он будет иметь уникальное значение.
Введение в MongoDB. Руководство для начинающих
Вступление
С переходом парадигмы в сторону динамического контента, спрос на базу данных No-SQL вырос. Это привело к появлению многочисленных No-SQL баз данных, таких как MongoDB.
MongoDB, классифицированная как база данных No-SQL, представляет собой базу данных на основе документов, в которой хранятся данные в виде документов JSON, автоматически сгенерированные для каждого документа.
Это позволяет разработчикам быстро вносить изменения в объекты без необходимости каких-либо изменений на уровне базы данных.
Установка MongoDB
MongoDB, как и любая другая база данных, доступна в нескольких вариантах в зависимости от потребностей разработки.
Каждый из них полностью совместим с любой операционной системой. Для начала, загрузите соответствующий установочный файл в соответствии с вашей операционной системой.
Процесс установки немного отличается для каждой операционной системы, и, следовательно, мы будем проходить установку каждой операционной системы отдельно.
Установка на MacOS
Загрузите архив .tgz, содержащий необходимые двоичные файлы. Разархивировав его, вы сможете просмотреть набор двоичных файлов, расположенных в папке bin.
Установка на Windows
Приведенные выше команды приведут вас в соответствующий каталог и выполнят установку в указанном месте. После установки вам необходимо настроить путь к хранилищу базы данных по умолчанию для MongoDB. Команда ниже поможет вам настроить
Приведенная выше команда создает папку db/data в каталоге, на который в данный момент указывает командная строка. В случае, если вам нужно заново настроить базу данных, вы можете использовать mongod.exe с аргументом dbpath, как показано ниже:
Установка на Linux
Как и в случае установки на MacOS, MongoDB для Linux-версий также доступна в виде архивированной группы двоичных файлов. Процесс установки MongoDB довольно похож.
Создание первой коллекции
MongoDB хранит данные в форме документов JSON. Группа такой документации все вместе известна как коллекция в MongoDB. Таким образом, коллекция аналогична таблице в реляционной базе данных, а документ аналогичен записи.
Для хранения документов нам сначала нужно создать коллекцию. Интересной особенностью базы данных NoSQL является то, что в отличие от базы данных SQL вам не нужно указывать имена столбцов или типы данных в ней.
Первым шагом к созданию коллекции является создание базы данных. Чтобы создать базу данных и подключиться к ней с помощью командной строки, выполните приведенную ниже команду из домашнего каталога установки MongoDB.
Эта команда используется для запуска подключения к базе данных и одновременного подключения к учебной базе данных. В журнале будет показано несколько строк, указывающих, что командная строка подключена к базе данных MongoDB.
Пример ответа в командной строке показан ниже, чтобы дать вам лучшее представление об этом.
Вот как создается пустая коллекция. Следующим шагом является вставка данных и некоторая обработка записей с использованием командной строки MongoDB.
Вставка документа в коллекцию
Как обсуждалось выше, можно вставить практически любой JSON в каждую коллекцию MongoDB.
Давайте начнем со вставки первого документа JSON в коллекцию firstCollection, созданную выше.
Приведенная выше команда имеет многократное использование в зависимости от варианта find() функции. Если аргументы не указаны, как в случае с приведенной выше командой, она выбирает все доступные документы из коллекции.
Вы можете вставить еще одну запись и попробовать то же самое. При этом выходные данные вышеуказанной команды будут аналогичны показанным ниже:
Как видно, показаны две доступные записи. Функция find() может быть легко использована для фильтрации документов на основе определенных параметров. Давайте отфильтруем документ, используя атрибут name.
Процесс фильтрации прост, и это можно понять из команды ниже:
Фильтр также можно использовать с несколькими атрибутами в JSON. Хотя к запросу можно добавить любое количество параметров, ограничением этого подхода является то, что он соответствует только точному значению атрибутов.
Фильтрация записей с использованием регулярных выражений (Regex)
Сложные запросы в MongoDB
Давайте попробуем получить список документов, в которых атрибут name содержит John или атрибут skill содержит Java.
Для следующего набора операторов нам нужно будет создать еще одну коллекцию и добавить в нее несколько записей, используя команды ниже.
Следующий набор операторов, которые мы будем использовать, это операторы сравнения в запросе. Для сравнения значений с использованием таких критериев, как меньше или больше или не равно, мы используем соответствующие операторы в передаваемом нами значении.
Пример получения списка студентов с оценками выше 22 показан ниже.
Оператор $gt указывает больше, чем в критериях. Таким образом, документы с отметками более 22 отображаются. Точно так же есть другие операторы, которые можно использовать. Они перечислены ниже.
Оператор | Назначение | Пример |
$eq | Если значение равно | |
$gt | Если значение больше | |
$lt | Если значение меньше | |
$gte | Если значение больше или равно | |
$lte | Если значение меньше или равно | |
$ne | Если значение не равно | |
$in | Если значение равно одному из значений массива | |
$nin | Если значение не равно одному из значений массива |
Графический интерфейс (GUI) в MongoDB
В обсуждении выше мы использовали командную строку для выполнения наших запросов в MongoDB.
Использование командной строки может быть сложной задачей, когда речь идет о сложных запросах и большем наборе данных. Чтобы упростить просмотр данных и выполнение запросов, MongoDB предоставляет вам отличный инструмент с графическим интерфейсом, который называется MongoDB Compass.
MongoDB Compass можно легко загрузить с сайта загрузки MongoDB. После того, как вы загрузили и установили MongoDB Compass, запустите приложение, и вас будет приветствовать экран, похожий на экран, показанный ниже.
Учитывая, что у вас запущен и работает сервер MongoDB, нажмите кнопку CONNECT со сведениями по умолчанию. Вы должны войти в систему и увидеть список доступных баз данных.
Щелкните по базе данных учебника, чтобы проверить список коллекций в учебной базе данных. Как показано ниже, он отображает список доступных коллекций в учебной базе данных.
При щелчке по коллекции отображается список документов с необходимыми элементами управления для фильтрации записей с использованием JSON, а также средство для просмотра документов в формате JSON или табличном формате согласно вашему удобству.
Графический интерфейс также упрощает добавление документа. Все, что вам нужно сделать, это нажать кнопку INSERT DOCUMENT на экране, показанном ниже. Он открывает небольшое диалоговое окно с запросом деталей документа с автоматически сгенерированным идентификатором документа.
Графический интерфейс упрощает множество операций, которые могут быть затруднены при использовании интерфейса командной строки MongoDB.
Мы описали суть NoSQL с помощью множества примеров и поняли, как документы отличаются от обычной записи реляционной базы данных.
В чем особенности MongoDB и когда эта база данных вам подходит: руководство для новичков
Подготовили небольшой гайд по СУБД MongoDB: вы узнаете, в чем ее особенности, плюсы и недостатки, для каких проектов она подходит, а когда лучше выбрать реляционную базу данных.
Что такое база данных MongoDB и в чем ее особенности
MongoDB — документоориентированная система управления базами данных с открытым исходным кодом. Для хранения данных используется JSON-подобный формат. Эта СУБД отличается высокой доступностью, масштабируемостью и безопасностью.
Главные особенности MongoDB:
В одном документе могут быть поля разных типов данных, данные не нужно приводить к одному типу. Основное преимущество MongoDB заключается в том, что она может хранить любые данные, но эти данные должны быть в формате JSON.
Пример документа в MongoDB
На схеме показано, как выглядит документ в MongoDB:
MongoDB добавляет поле _id с уникальным значением для идентификации документа в коллекции. Это поле обязательно для заполнения в каждом документе. Оно похоже на первичный ключ документа. Если вы создаете новый документ без поля _id, то MongoDB автоматически создаст его и добавит 24-значный уникальный идентификатор к каждому документу в коллекции.
Структура хранилища MongoDB
СУБД MongoDB полагается на концепции базы данных, коллекций и документов. Рассмотрим основные термины, а для лучшего понимания сравним их с терминами из языка структурированных запросов (SQL):
Зачем использовать MongoDB: преимущества этой СУБД
Ниже приведены несколько причин, по которым стоит использовать MongoDB:
Недостатки MongoDB
Вот основные минусы MongoDB:
Когда стоит и не стоит использовать MongoDB
MongoDB часто выбирают, когда нужна масштабируемая база данных, в настоящее время ее используют в качестве хранилища внутренних данных многие организации, такие как IBM, Twitter, Zendesk, Forbes, Facebook, Google и другие.
Примеры, когда MongoDB подходит для проекта: