MongoDB¶
MongoDB - документоориентированная (NoSQL) СУБД, хранящая все данные в виде объектов JSON. Отличительная особенность таких баз данных - отсутствие реляционных связей и заранее описанных схем таблиц.
Прежде, чем начать, необходимо установить саму MongoDB. Для этого зайдите на официальный сайт MongoDB и следуйте всем указанным на нем инструкциям по установке.
Для работы с MongoDB и Node.js имеется специальный официальный драйвер, который устанавливается через npm.
1 | |
Подключение¶
Теперь подключимся к базе.
connection.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Подключение осуществляется с помощью метода connect() экземпляра MongoClient, который принимает URL, по которому доступна MongoDB (по умолчанию http://127.0.0.1:27017), и callback-функцию, которой передается два параметра:
- ошибка подключения (
null, если подключение прошло успешно); - экземпляр объекта подключения к MongoDB, через API которого создаются новые БД и осуществляется доступ к уже существующим.
После окончания работы с сервером MongoDB не забывайте закрывать соединение с сервером базы данных.
1 | |
Создание базы данных¶
Для создания/подключения к базе данных используется метод db() экземпляра объекта подключения, который принимает название БД и возвращает объект для выполнения . Если указанная база не существует, то она будет создана.
1 | |
Физически база данных начинает свое существование только после создания в ней хотя бы одной коллекции (тоже самое, что и таблица в SQL).
Коллекции¶
Коллекции создаются вызовом метода createCollection(), принимающего название коллекции и callback-функцию с ошибкой и результатом в качестве параметров.
1 2 | |
Для удаления коллекции используйте применительно к ней метод drop(), который в качестве аргумента принимает callback-функцию с двумя параметрами:
- ошибка (если удаление прошло успешно -
null); - объект с успешным результатом.
1 2 3 4 5 6 | |
В отличии от базы данных создание и подключение к коллекции осуществляется двумя разными методами.
Создание записи¶
Теперь создадим в коллекции users первую запись.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Чтобы вставить сразу несколько записей имеется метод insertMany().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Получение записи¶
Для получения всех записей в коллекции используйте метод find() экземпляра коллекции.
1 | |
Методу find() в качестве параметра можно передать объект, выполняющий роль фильтра для извлекаемых записей. Например, в следующем примере возвращаются все записи, у которых поле gender равно male.
1 | |
Чтобы получить только первую запись выборки, используйте метод findOne().
1 2 | |
Для получения n-первых записей имеется метод limit(), принимающий количество возвращаемых записей.
1 | |
Сортировка полученного результата осуществляется с помощью метода sort(), который принимает объект, в котором ключ - сортирующее поле, а значение - порядок сортировки (1 - по возрастанию, а -1 - по убыванию).
1 | |
Ограничение по выборке и сортировку можно задать в объекте, передаваемом вторым необязательным параметром.
1 2 3 4 5 6 7 | |
С полным списком параметров можно ознакомиться в официальной документации.
Объединение коллекций¶
Ранее уже упоминалось, что в MongoDB отсутствуют реляционность, тем не менее в ней возможно объединений коллекций по принципу LEFT JOIN в SQL с помощью метода aggregate().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Метод aggregate() принимает массив с описанием объединений с другими коллекциями. Объединение определяется объектом с ключом $lookup, значением для которого служит объект конфигурации со следующими свойствами:
from- название коллекции, с которой происходит слияние;localField- наименование поля, по которому будет осуществляться объединение с внешней коллекцией;foreignField- наименование объединяющего поля из внешней коллекции;as- название поля в текущей коллекции, которое будет содержать данные, полученные в результате слияния.
Обновление записи¶
Обновление записи происходит с помощью метода updateOne(), который принимает условие для записей, которые необходимо обновить, и объект со свойством $set, в значении которого указываются, какие именно поля нужно изменить.
1 2 3 4 5 6 7 8 9 10 | |
Удаление записи¶
За удаление записей отвечают методы deleteOne() и deleteMany().
1 2 3 4 5 6 | |
Более подробную информацию о возможностях драйвера для Node.js MongoDB можно получить на официальном сайте.