Вступление
MongoDB - это документно-ориентированная база данных, которая бесплатна и имеет открытый исходный код. Он классифицируется как база данных NoSQL, поскольку он не опирается на традиционную структуру реляционной базы данных на основе таблиц. Вместо этого он использует JSON-подобные документы с динамическими схемами. В отличие от реляционных баз данных, MongoDB не требует предварительно определенной схемы перед добавлением данных в базу данных. Вы можете изменить схему в любое время и так часто, как это необходимо, без необходимости установки новой базы данных с обновленной схемой.
Из этого туториала Вы узнаете, как установить MongoDB Community Edition на сервере CentOS 7.
Предпосылки
Прежде чем следовать этому руководству, убедитесь, что у вас есть обычный пользователь без полномочий root с привилегиями + sudo +
. Подробнее о том, как настроить пользователя с этими привилегиями, вы можете узнать из нашего руководства, https://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-centos-quickstart [ Как создать пользователя Sudo на CentOS.
Шаг 1 - Добавление репозитория MongoDB
Пакет + mongodb-org +
не существует в репозиториях по умолчанию для CentOS. Однако MongoDB поддерживает специальный репозиторий. Давайте добавим это на наш сервер.
С помощью редактора + vi +
создайте файл + .repo +
для + yum +
, утилиты управления пакетами для CentOS:
sudo vi /etc/yum.repos.d/mongodb-org.repo
Затем перейдите в раздел Install on Red Hat документации MongoDB. и добавьте информацию о хранилище для последней стабильной версии в файл:
/etc/yum.repos.d/mongodb-org.repo
[mongodb-org-]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org//x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-.asc
Сохраните и закройте файл.
Прежде чем двигаться дальше, мы должны убедиться, что репозиторий MongoDB существует в утилите + yum +
. Команда + repolist +
отображает список включенных репозиториев:
yum repolist
Output. . .
repo id repo name
base/7/x86_64 CentOS-7 - Base
extras/7/x86_64 CentOS-7 - Extras
updates/7/x86_64 CentOS-7 - Updates
. . .
Установив «+ MongoDB Repository +», давайте приступим к установке.
Шаг 2 - Установка MongoDB
Мы можем установить пакет + mongodb-org +
из стороннего репозитория с помощью утилиты + yum +
.
sudo yum install mongodb-org
Есть два + Это нормально [y / N]: +
. Первый разрешает установку пакетов MongoDB, а второй импортирует ключ GPG. Издатель MongoDB подписывает свое программное обеспечение, а + yum +
использует ключ для подтверждения целостности загруженных пакетов. В каждой строке введите + Y +
, а затем нажмите клавишу + ENTER +
.
Затем запустите сервис MongoDB с помощью утилиты + systemctl +
:
sudo systemctl start mongod
Хотя мы не будем использовать их в этом руководстве, вы также можете изменить состояние службы MongoDB с помощью команд + reload +
и + stop +
.
Команда + reload +
запрашивает, чтобы процесс + mongod +
прочитал файл конфигурации + / etc / mongod.conf +
, и применил любые изменения, не требуя перезапуска.
sudo systemctl reload mongod
Команда + stop +
останавливает все запущенные процессы + mongod +
.
sudo systemctl stop mongod
Утилита + systemctl +
не выдала результат после выполнения команды + start +
, но мы можем проверить, запущена ли служба, просмотрев конец файла + mongod.log +
с помощью команды + tail +
:
sudo tail /var/log/mongodb/mongod.log
Output. . .
Вывод * в ожидании соединения * подтверждает, что MongoDB успешно запущен, и мы можем получить доступ к серверу базы данных с помощью оболочки MongoDB:
mongo
Чтобы узнать, как взаимодействовать с MongoDB из оболочки, вы можете просмотреть выходные данные метода + db.help () +
, который предоставляет список методов для объекта * db *.
db.help()
OutputDB methods:
db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
db.auth(username, password)
db.cloneDatabase(fromhost)
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb, todb, fromhost)
db.createCollection(name, { size : ..., capped : ..., max : ... } )
db.createUser(userDocument)
db.currentOp() displays currently executing operations in the db
db.dropDatabase()
. . .
Оставьте процесс + mongod
работающим в фоновом режиме, но выйдите из оболочки с помощью команды` + exit`:
exit
OutputBye
Шаг 3 - Проверка запуска
Поскольку управляемое базой данных приложение не может функционировать без базы данных, мы позаботимся о том, чтобы демон MongoDB + mongod +
запускался с системой.
Используйте утилиту + systemctl +
для проверки статуса запуска:
systemctl is-enabled mongod; echo $?
Нулевой вывод подтверждает включенного демона, который мы хотим. Однако один подтверждает отключенный демон, который не запустится.
Output. . .
enabled
В случае отключенного демона используйте утилиту + systemctl +
, чтобы включить его:
sudo systemctl enable mongod
Теперь у нас есть работающий экземпляр MongoDB, который автоматически запускается после перезагрузки системы.
Шаг 4 - Импорт примера набора данных (необязательно)
В отличие от других серверов баз данных, MongoDB не содержит данных в своей базе данных + test +
. Поскольку мы не хотим экспериментировать с новым программным обеспечением, использующим производственные данные, мы загрузим образец набора данных из «https://docs.mongodb.com/getting-started/shell/import-data/[Import Example Dataset]» раздел документации «Начало работы с MongoDB». Документ JSON содержит коллекцию ресторанов, которые мы будем использовать для практики взаимодействия с MongoDB и предотвращения нанесения ущерба конфиденциальным данным.
Начните с перемещения в доступный для записи каталог:
cd /tmp
Используйте команду + curl +
и ссылку из MongoDB для загрузки файла JSON:
curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Команда + mongoimport +
вставит данные в базу данных * test *. Флаг + - db +
определяет, какую базу данных использовать, в то время как флаг + - collection +
указывает, где в базе данных будет храниться информация, а флаг + - file +
сообщает команде, какой файл выполнить. действие импорта на:
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
Вывод подтверждает импорт данных из файла + primer-dataset.json
:
Outputconnected to: localhost
imported 25359 documents
Имея образец набора данных, мы выполним запрос к нему.
Перезапустите оболочку MongoDB:
mongo
По умолчанию оболочка выбирает базу данных + test +
, куда мы импортировали наши данные.
Запросите коллекцию * restaurant * с методом + find () +
, чтобы отобразить список всех restuarants в наборе данных. Поскольку в коллекции содержится более 25 000 записей, используйте необязательный метод + limit () +
, чтобы уменьшить вывод запроса до указанного числа. Кроме того, метод + pretty () +
делает информацию более понятной для человека с помощью новых строк и отступов.
db.restaurants.find().limit( 1 ).pretty()
Output{
"_id" : ObjectId("57e0443b46af7966d1c8fa68"),
"address" : {
"building" : "1007",
"coord" : [
-73.856077,
40.848447
],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [
{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
},
{
"date" : ISODate("2013-09-11T00:00:00Z"),
"grade" : "A",
"score" : 6
},
{
"date" : ISODate("2013-01-24T00:00:00Z"),
"grade" : "A",
"score" : 10
},
{
"date" : ISODate("2011-11-23T00:00:00Z"),
"grade" : "A",
"score" : 9
},
{
"date" : ISODate("2011-03-10T00:00:00Z"),
"grade" : "B",
"score" : 14
}
],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}
Вы можете продолжить использование набора данных для ознакомления с MongoDB или удалить его с помощью метода + db.restaurants.drop () +
:
db.restaurants.drop()
Наконец, выйдите из оболочки с помощью команды + exit +
:
exit
OutputBye
Заключение
В этом руководстве мы рассмотрели добавление стороннего репозитория в + yum +
, установку сервера базы данных MongoDB, импорт образца набора данных и выполнение простого запроса. Мы едва поцарапали поверхность возможностей MongoDB. Вы можете создать свою собственную базу данных с несколькими * коллекциями *, заполнить их множеством * документов * и начать создавать надежное приложение.