Как подключить mongodb к сайту

Установка и подключение к MongoDB

В данной инструкции мы рассмотрим процесс установки MongoDB на Linux Ubuntu (Debian). Также будут приведены примеры настройки подключения по сети, защита соединения с помощью шифрования и аутентификации.

Установка

На странице MongoDB Community Downloads смотрим стабильные версии программного продукта. На момент обновления инструкции это была 4.4.

Обратите внимание, установка MongoDB возможна на большое число популярных операционных систем — Amazon, Debian, Ubuntu, macOS, CentOS, Red Hat, Windows и другие.

Переходим на страницу загрузки ключей для проверки подлинности репозитория. Копируем ссылку для версии MongoDB, которую мы планируем установить:

Как подключить mongodb к сайту

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

С помощью скопированной ссылки скачиваем и устанавливаем ключ:

Создаем файл для настройки репозитория Ubuntu:

deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse

* focal — название релиза Ubuntu. В данном примере, версия 20.04. На данный момент возможны варианты:

Обновляем список пакетов:

apt-get install mongodb-org

Стартуем сервис и разрешаем его автозапуск:

systemctl start mongod

systemctl enable mongod

Для подключения к СУБД вводим команду:

Можно для проверки ввести команду, которая покажет созданные базы данных:

После первой установки мы должны увидеть следующее:

admin 0.000GB
config 0.000GB
local 0.000GB

В качестве примера работы мы можем попробовать создать новую базу данных и коллекцию. Объекты в MongoDB создаются автоматически при первом к ним обращении.

Для создания базы просто обращается к ней:

* в данном примере будут создана база newDB.

Для создания коллекции, выполняем команду на вставку данных:

Выходим из оболочки SQL:

Доступ по сети

По умолчанию к установленной базе можно подключиться только с локального компьютера. Рассмотрим процесс настройки сетевого доступа.

Для начала, откроем порт в брандмауэре:

* по умолчанию, MongoDB работает на TCP-порту 27017.

В системах на базе Ubuntu и Debian брандмауэр работает по принципу разрешения. Если мы не меняли данной настройки, то нам не обязательно создавать разрешающее правило для Mongo.

Открываем конфигурационный файл СУБД:

Находим директиву net и в ней опцию bindIp — добавляем IP-адрес, на котором наш сервер должен принимать запросы для MongoDB:

net:
port: 27017
bindIp: 127.0.0.1, 192.168.1.15

* в нашем примере мы добавили к 127.0.0.1 адрес 192.168.1.15 — это сетевой адрес нашего сервера, на котором он должен принимать запросы.

Перезапускаем сервис mongod:

systemctl restart mongod

Чтобы проверить подключение, на другом компьютере должен быть установлен клиент для подключения к Mongo. Процесс его установки схож с установкой сервера. Рассмотрим пример для Ubuntu.

Устанавливаем ключ для репозитория:

deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse

* как в случае с сервером, focal — название релиза Ubuntu. В данном примере, версия 20.04. Другие варианты: bionic: 18.04, xenial: 16.04.

Обновляем список пакетов:

Устанавливаем клиентскую часть:

apt-get install mongodb-org-shell

Теперь можно подключиться к нашему серверу:

* в данном примере мы подключаемся к серверу MongoDB 192.168.1.15.

Также мы можем использовать MongoDB Compass — это приложение под Windows, Linux и macOS для работы с базой Mongo в графическом интерфейсе. Скачать его можно на странице официального сайта.

Аутентификация

По умолчанию, мы можем подключиться к СУБД без авторизации. Если нам необходимо повысить безопасность работы с базой, можно требовать ввода логина и пароля.

Заходим в командную оболочку Mongo:

Подключаемся к базе admin:

Создаем пользователя, под которым будем авторизовываться:

* в данном примере мы создадим пользователя с правами доступа на все базы. Логин root, пароль будет запрошен после ввода.

Придумываем и вводим пароль

После создания пользователя мы должны увидеть, примерно, следующую картину:

Successfully added user: <
«user» : «root»,
«roles» : [
<
«role» : «userAdminAnyDatabase»,
«db» : «admin»
>,
«readWriteAnyDatabase»
]
>

Выходим из командной оболочки:

Открываем конфигурационный файл:

Находим директиву security и задаем параметр authorization:

security:
authorization: enabled

Перезапускаем сервис mongod:

systemctl restart mongod

Теперь пробуем подключиться к mongo. Мы можем авторизоваться несколькими способами.

а) Авторизация при подключении:

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

б) Авторизация после подключения:

Теперь усилим безопасность, зашифровав передачу данных. Для этого нам понадобиться сертификат. В нашем примере, мы будем использовать самоподписанный сертификат, но в продуктивной среде, лучше его купить или запросить у Let’s Encrypt.

Создаем каталог, в котором разместим наши сертификаты:

Сгенерируем самоподписанный сертификат:

Выставим в качестве владельца на файлы сертификата пользователя mongodb:

chown mongodb:mongodb /etc/ssl/mongodb/cert.pem

Открываем конфигурационный файл СУБД:

В директиву net дописываем опции TLS:

net:
.
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb/cert.pem

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

Перезапускаем сервис mongod:

systemctl restart mongod

Для подключения к базе с использованием шифрования используем команду:

* в данном примере мы указываем при подключении использовать шифрование с использованием TLS. Опция tlsAllowInvalidCertificates говорит, что клиент должен принять неправильный сертификат (так как у нас он самоподписанный).

Так как у нас еще настроена аутентификация, для подключения введем такую команду:

Для подключения к нашему серверу по сети, полная команда будет такой:

Примеры подключения из языков программирования

Рассмотрим небольшие примеры для подключения к MongoDB из языков программирования PHP и Python.

Для возможности работы PHP с Mongo необходимо установить соответствующее расширение. Выполняем пошагово следующие действия:

apt-get install php-pear php-dev

pecl channel-update pecl.php.net

pecl install mongodb

Для каждого возможного варианта использования PHP необходимо создать отдельный конфигурационной файл. В данном примере, под php 7.4 для cli, php-fpm, apache.

Источник

Руководство по MongoDB

Для многих привычными являются базы данных реляционного типа — MySQL, MS SQL, Oracle и другие. В таких базах данные хранятся в таблицах, а для работы с ними нужно писать запросы. Но есть база данных с другой архитектурой — база MongoDB. В этой статье мы расскажем, что это такое и как проходит работа с MongoDB, опишем её преимущества, а также приведём краткое руководство по установке MongoDB на Ubuntu.

База данных MongoDB

Установите базу данных для приложений нового поколения MongoDB. При аренде нового Облачного сервера с Ubuntu 18.04 доступна автоматическая установка.

Что такое MongoDB

MongoDB — это документоориентированная база данных типа NoSQL. В отличие от реляционных БД, NoSQL для хранения данных используют не таблицы со строками и столбцами, а коллекции и JSON-подобные документы. Документы состоят из так называемых пар «ключ-значение». Пара «ключ-значение» представляет собой имя поля (ключ документа) и его значение. Коллекции же состоят из групп документов.

В MongoDB можно работать с разными языками программирования: PHP, Perl, C/C++. Кроме того, возможно подключение MongoDB к Node JS. Для MongoDB документация на русском языке отсутствует, но на официальном сайте есть методичка по базам данных в MongoDB.

Преимущества MongoDB

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

Кроссплатформенность — MongoDB можно использовать на операционных системах Windows, Linux (Ubuntu, Debian, CentOS), MacOS.

Динамические запросы к документам.

Репликация — MongoDB может работать на нескольких серверах.

Ключевые компоненты архитектуры MongoDB

_id — уникальный идентификатор документа MongoDB. Если вы добавите новый документ без поля _id, идентификатор создастся автоматически.

Документ — запись, которая хранится в коллекции. Это эквивалент строки в реляционных СУБД. Состоит из пар «ключ-значение».

Коллекция — это группа документов MongoDB, эквивалент таблицы в реляционных СУБД.

База данных — это контейнер с коллекциями. У каждой базы данных есть свой собственный набор файлов в файловой системе. Сервер MongoDB может хранить несколько баз данных.

Пример документа MongoDB:

Как подключить mongodb к сайту

Установка MongoDB на Ubuntu

Подробная инструкция по установке на Ubuntu (install Ubuntu) есть на официальном сайте MongoDB. Мы опишем, как установить MongoDB и создать пользователя базы данных.

Обратите внимание! Перед установкой убедитесь, что у вас заказан VPS Cloud Server.

Источник

Connect to MongoDBВ¶

Author: MongoDB Documentation Team

There are several ways to connect to your MongoDB instance.

The following guide steps you through installing the MongoDB client of your choice.

Time required: 15 minutes

What You’ll Need¶

If you are using MongoDB in the Cloud (Atlas), you will need to:

Or, if you plan on using a local instance of MongoDB, you will need to:

Check Your EnvironmentВ¶

ProcedureВ¶

Select the client and environment you will use at the top of this page.

Install your clientВ¶

The mongo shell is packaged with the MongoDB Server Community and Enterprise distributions, and is also available for users of Atlas as a client-only download.

If you do not have mongo shell installed, follow the install directions for your environment.

Как подключить mongodb к сайту

Как подключить mongodb к сайту

Download the latest stable version for your environment.

Download the latest stable version for your environment.

Double click the tgz file to untar the file.

Download the latest stable version for your environment.

Extract the tar file and locate the mongo executable under the bin directory of your install root.

To install Pymongo, see the Pymongo documentation.

To install the Java driver, see the Java Driver documentation

To install the node.js driver, see the Node.js Driver documentation

To install Motor, see the Motor documentation

To install the C#/.NET driver, see the C# Driver documentation

The MongoDB Go driver can be installed using go get :

The output of this may look like a warning stating something like:

This is expected output.

Alternatively if you are using the dep package manager to install the driver, you can install the main mongo package as well as the bson and mongo/options package using this command:

Obtain your MongoDB connection stringВ¶

If you are using Compass, skip this step.

You can create a URI string for your session in MongoDB Guides by copying and pasting your Atlas connection string in the form below. Once you copy the string here, any relevant code examples within the MongoDB Guides will be populated with a URI string. If you have not already retrieved your Atlas connection string, see Set Up Atlas Connectivity guide.

The URI string used in the guides assumes you have set up authentication for your MongoDB instance, and have created a username and password for read and write access to a MongoDB database.

If you have already set up a user with the readWriteAnyDatabase role through the Secure your MongoDB Deployment guide, you may use that username and password here, along with the admin database in your connection string.

The URI form below allows you to create a URI string for your session in MongoDB Guides by filling out a form. Once you fill out the form, any relevant code examples within the MongoDB Guides will be populated with a URI string. You can change these at any time by repopulating the form.

Connect to your MongoDB instanceВ¶

Select the operating system platform on which you are running the MongoDB client you have selected.

If you wish to manually configure your Compass connection, load Compass and select the New Connection link. You will see a form where you can enter connection information for MongoDB.

Atlas users can copy a URI string from the Atlas console into Compass. MongoDB Compass can detect whether you have a MongoDB URI connection string in your system clipboard and auto- populate the connection dialog from the URI.

See Set Up Atlas Connectivity for information on how to get the Atlas connection string URI into your copy buffer.

If Compass was already running when you copied the URI string, click the NEW CONNECTION button.

Как подключить mongodb к сайту

You should then populate the password field with the proper password for your MongoDB user in the connection form.

Errors related to connecting through Compass will appear in red at the top of the Connect screen.

It’s a good idea to put your connection code in a class so that it can be reused.

Now add code to call the class you just created.

For the MongoDB java driver 3.7 and beyond, use the MongoClients.create() method.

For legacy drivers (prior to 3.7), use:

The MongoDB.Bson package is used in CRUD operations, so you’ll import it here.

For now, you will use the context.TODO().

Later you’ll configure the context specific to your requirements.

In your Go workspace and project folder, run build.

Now run the binary. For binaries that are not installed, you’ll have to specify the path.

If you’d like to run the resulting binary without specifying a path, install the binary you just built into your Go workspace.

Now run the code. “yourprojectname” is the name of the project directory that contains the file with your main() function.

For installed binaries use:

For binaries that are not installed, you’ll have to specify the path.

The default timeout for the Go driver to connect to the database is 30 seconds. In the event that you are unable to connect, you will see an error that resembles this:

SummaryВ¶

Congratulations. If you have successfully completed this guide, you have connected to your MongoDB instance. In the next group of guides, you’ll learn how to create, read, update, and delete data in MongoDB.

What’s Next¶

In the next guide, you’ll learn how to insert data into MongoDB.

See AlsoВ¶

For CRUD (Create, Read, Update, Delete) guides:

© MongoDB, Inc 2008-present. MongoDB, Mongo, and the leaf logo are registered trademarks of MongoDB, Inc.

Источник

Основы MongoDB и Mongoose

Введение в MongoDB и Mongoose

MongoDB—база данных, которая хранит данные в виде документов для использования приложением. Как правило, документы имеют структуру, подобную JSON (JavaScript Object Notation—текстовый формат обмена данными, основанный на JavaScript). Mongo—нереляционная база данных “NoSQL”. Это означает, что Mongo хранит все связанные данные в одной записи, а не хранит их во многих заранее заданных таблицах, как в базе данных SQL. Некоторые преимущества этой модели хранения заключаются в следующем:

Хотя существует много нереляционных баз данных, использование Mongo с JSON в качестве структуры хранения документов делает его логичным выбором при изучении бэкенда JavaScript. Доступ к документам и их свойствам подобен доступу к объектам в JavaScript.

Mongoose.js—модуль npm для Node.js, который позволяет вам писать объекты для Mongo так же, как и в JavaScript. Это может облегчить создание документов для хранения в Mongo.

Работа над задачами в этом руководстве потребует написания кода на Glitch.

Запустите этот проект на Glitch по этой ссылке или клонируйте этот репозиторий на GitHub!

Размещение бесплатного экземпляра mongodb для проектов в MongoDB Atlas

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

Чтобы создавать веб-приложения с помощью базы данных MongoDB можно использовать три пути:

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

Установка и настройка Mongoose и MongoDB

Дальнейшие действия предполагают, что у вас нет своего проекта, и что вы начнете с нуля.

В терминале создайте каталог myapp и сделайте его рабочим.

Эта команда выдает целый ряд приглашений, например, приглашение указать имя и версию вашего приложения. На данный момент, достаточно просто нажать клавишу ВВОД, чтобы принять предлагаемые значения по умолчанию для большинства пунктов, кроме следующего:

Введите app.js или любое другое имя главного файла по своему желанию. Если вас устраивает index.js, нажмите клавишу ВВОД, чтобы принять предложенное имя файла по умолчанию.

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

на свой пароль в MongoDB Atlas. Там не должно быть символов <> (если только они не находятся в вашем пароле).

Для того, чтобы переменные окружения из файла env можно было использовать в приложении нужно установить пакет dotenv :

В файле package.json будет добавлена зависимость:

Теперь, если вам необходимо использовать какую-нибудь переменную окружения из файла env в одном из файлов вашего приложения, вы должны в этом файле просто подключить пакет dotenv следующим образом:

Подключение БД MongoDB

Создание модели

В mongoose все завязано на 2х ключевых понятиях Схема(Schema) – описание сущности и Модель – сама сущность.

Создадайте схему и модель из неё.

В файл index.js скопируйте следующий код.

Создание и сохранение записи модели

В файле index.js замените содержимое на следующий код.

Метод save() должен сохранить документ в базе данных mongodb. Если сохранение прошло успешно, будет выведено на консоль ‘Пользователь с именем Ivan Petrov сохранен’, если же произошла ошибка, то будет выведено соответствующее сообщение об ошибке.

В вашей базе данных теперь должен быть один документ с именем “Ivan Petrov”.

Создание нескольких записей с помощью model.create()

В файле index.js замените содержимое на следующий код.

Таким образом с помощью функции create() из массива arrayUsers были добавлены еще три документа в БД, а на консоль выведена сообщение “В базе данных созданы 3 документа”. Обратите внимание, в базе данных теперь четыре документа.

Использование model.find() для поиска в базе данных

В файл index.js скопируйте следующий код.

Функция find() находит и возвращает все документы, соответствующие селектору. Результатом будет массив документов.

Если в результате будет слишком много документов, чтобы поместиться в памяти, используйте функцию cursor()

Использование model.findOne() для возвращения одного документа из базы данных

В файл index.js скопируйте следующий код.

Метод findOne() находит в базе данных первый попавшийся документ со свойством < name: "Светлана" >и возвращает его. Если в качестве первого параметра в функции findOne() ничего не указано, mongoose вернет произвольный документ.

Использование model.findById() для поиска в базе данных по id

В файл index.js скопируйте следующий код.

Если документ с указанным id найден, то на консоль будет выведено сообщение “Пользователь c найден, его зовут Олег, ему 27 лет”.

Обновление документов в БД с помощью стандартного поиска, присвоения и сохранения

В файл index.js скопируйте следующий код.

Обновление документов в БД с помощью model.findOneAndUpdate()

В последних версиях mongoose есть методы, упрощающие обновление документов. Но некоторые более продвинутые функции (например, хуки pre/post, валидация) ведут себя по-другому при этом подходе, поэтому классический метод все еще полезен во многих ситуациях.

В файл index.js скопируйте следующий код.

Удаление документов из MongoDB с помощью Mongoose

Удаление одного документа с помощью model.findByIdAndRemove

В файл index.js скопируйте следующий код.

Удаление нескольких документов с помощью model.remove()

Функция Model.remove() полезна для удаления всех документов, соответствующих заданным критериям.

Примечание: Метод remove() возвращает не удаленный документ, а объект JSON, содержащий результат операции и количество удаленных элементов.

Цепочка помощников по поисковым запросам для сужения результатов поиска

Более подробно о помощниках запросов смотри здесь

Используемые ресурсы:

Автор injashkin. VKontakte

Источник

Node.js и MongoDB

Начало работы с MongoDB

Наиболее популярной системой управления базами данных для Node.js на данный момент является MongoDB. Для работы с этой платформой прежде всего необходимо установить сам сервер MongoDB. Подробнее как это сделать, описывается здесь. Кроме самого сервера Mongo для взаимодействия с Node.js нам необходим драйвер.

При подключении и взаимодействии с бд в MongoDB можно выделить следующие этапы:

Подключение к серверу

Получение объекта базы данных на сервере

Получение объекта коллекции в базе данных

Взаимодействие с коллекцией (добавление, удаление, получение, изменение данных)

Далее перейдем к этому каталогу в командной строке/терминале и для добавления всех нужных пакетов выполним команду:

Подключение к базе данных

Для подключения к серверу mongodb применяется метод connect() :

Далее с помощью метода connect происходит подключение к серверу. В качестве параметра метод принимает функцию обратного вызова, которая срабатывает при установке подключения. Это функция принимает два параметра: err (возникшая ошибка при установке соединения) и client (ссылка на подключенный к серверу клиент).

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

База данных

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

В качестве параметра в метод передается название базы данных, к которой мы хотим подключиться. Результатом функции является объект базы данных, через который мы далее уже сможем обращаться к данным в этой БД.

Для примера выполним ping к базе данных «admin», которая по умолчанию есть на сервере MongoDB:

В самой функции обратного вызова мы можем проверить наличие ошибки и при ее отстутствии вывести информацию об успешном подключении и полученный результат:

Для тестирования подключения перейдем на жестком диске к каталогу, в который установлена mongodb, а в этом каталоге перейдем к папке bin :

Как подключить mongodb к сайту

Как подключить mongodb к сайту

Затем запустим наш файл app.js:

Как подключить mongodb к сайту

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

Пример пинга с async/await :

Коллекции

В отличие от таблиц в реляционных системах, где все данные хранятся в виде строк, в коллекциях в MongoDB данные хранятся в виде документов. Например, обратимся к коллекции в базе данных. Для этого определим в каталоге проекта следующий файл app.js :

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

После подключения мы обращаемся к коллекции «users»:

Опять же неважно, что такой коллекции по умолчанию нет в бд usersdb, она также будет создана при первом обращении.

В функции обратного вызова выводим количество документов. Результат работы:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *