Для установки MongoDB на Mac OS рекомендуемым и при этом наиболее простым способом является применение пакетного менеджера homebrew. Поэтому для начала необходимо установить сам пакетный менеджер homebrew. Для этого в терминале необходимо выполнить команду
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
После установки homebrew для установки mongodb введем в терминале следующую команду
brew tap mongodb/brew
И после этого введем в терминале еще одну команду:
brew install mongodb-community@7.0
Обратите внимание на цифры версии - mongodb-community@7.0. То есть в данном случае устанавливается версия 7.0 Community-выпуска Mongo. Но при необходимости можно изменить эти цифры и задать другую версию.
В процессе установки будут установлены следующие файлы:
mongosh: представляет консольный интерфейс для взаимодействия с базами данных, своего рода консольный клиент
mongod: сервер баз данных MongoDB. Он обрабатывает запросы, управляет форматом данных и выполняет различные операции в фоновом режиме по управлению базами данных
mongos: служба маршрутизации MongoDB, которая помогает обрабатывать запросы и определять местоположение данных в кластере MongoDB
Кроме того, при установке в зависимости от архитектуры компьютера (intel или arm) будут созданы следующие файлы и каталоги:
Файлы/Каталоги | Intel | Apple M1 |
Файл конфигурации | /usr/local/etc/mongod.conf | /opt/homebrew/etc/mongod.conf |
Каталог логов | /usr/local/var/log/mongodb | /opt/homebrew/var/log/mongodb |
Каталог баз данных | /usr/local/var/mongodb | /opt/homebrew/var/mongodb |
Откроем файл конфигурации. Для архитектуры Intel x86-64 он выглядит примерно следующим образом:
systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1, ::1 ipv6: true
В частности, параметр path
указывает на путь лога mongodb - mongo.log. Если вдруг по какой-то причине сервер mongodb не запускается или при запуске/работе сервера
возникают какие-нибудь ошибки, то мы можем проверить файл лога, чтобы понять причину ошибок.
Другой важный параметр - dbPath
устанавливает каталог, где располагаются базы данных. Например, в моем случае это каталог
/usr/local/var/mongodb
. Часто при запуске mongodb на MacOS может возникать ошибка доступа к каталогу баз данных, особенно в последних версиях
MacOS. Поэтому важно, чтобы этот каталог был открыт как для чтения, так и для записи.
Чтобы проще было управлять базами данных, мы можем изменить путь к каталогу базм данных. Пусть в моем случае пусть это будет каталог /Users/eugene/Documents/mongodb
(грубо говоря папка mongodb в папке документов)
systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /Users/eugene/Documents/mongodb net: bindIp: 127.0.0.1, ::1 ipv6: true
И опять же важно, чтобы созданный каталог был открыт для записи. Установить права доступа можно в свойствах каталога.
Для запуска сервера MongoDB выполним в терминале следующую команду:
brew services start mongodb-community@7.0
Для отключения сервера применяется команда
brew services stop mongodb-community@7.0
Итак, после удачного запуска сервера мы сможем производить операции с бд через оболочку mongosh. Запустим ее, выполнив в терминале команду:
mongosh
Это консольная оболочка для взаимодействия с сервером, через которую можно управлять данными. Второй строкой эта оболочка говорит о подключении к серверу mongod.
Теперь поизведем какие-либо простейшие действия. Введем в терминале последовательно следующие команды и после каждой команды нажмем на Enter:
use userdb db.users.insertOne( { name: "Tom" } ) db.users.find()
Первая команда use userdb устанавливает в качестве используемой базу данных userdb. Даже если такой бд нет,
то она создается автоматически. И далее db
будет представлять текущую базу данных - то есть базу данных userdb. После db идет
users
- это коллекция, в которую затем мы добавляем новый объект. Если в SQL нам надо создавать таблицы заранее, то коллекции
MongoDB создает самостоятельно при их отсутствии.
С помощью метода db.users.insertOne() в коллекцию users базы данных userdb добавляется объект { name: "Tom" }
.
Описание добавляемого объекта определяется в формате, с которым вы возможно знакомы, если имели дело с форматом JSON. То есть в данном случае у объекта
определен один ключ "name", которому сопоставляется значение "Tom". То есть мы добавляем пользователя с именем Tom.
Если объект был успешно добавлен, то консоль выведет результат операции, в частности, идентификатор добавленного объекта.
А третья команда db.users.find() выводит на экран все объекты из бд test.
Из вывода вы можете увидеть, что к начальным значениям объекта было добавлено какое-то непонятно поле ObjectId.
Как вы помните, MongoDB в качестве уникальных идентификаторов документа использует поле _id
. И в данном случае ObjectId как
раз и представляет значение для идентификатора _id.