MongoDB - NoSQL нереляционная документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, написанная на языке C++, использующая гибкий JSON-формат документов и схему базы данных. Упрощает выборку и агрегацию данных, поддерживает создание кластеров и репликацию (копирование данных из одного источника на другой (или на множество других) и наоборот).
Для тех, кто привык работать с реляционными БД, приводим схему соответствия с MongoDB
Всё, что нужно сделать для начала работы с MongoDB - подключить данную услугу в панели управления аккаунтом во вкладке «Дополнительные услуги»
Начиная с версии MongoDB 3.2, механизмом хранения данных (т.н. «storage engine») по умолчанию является WiredTiger.
WiredTiger использует контроль параллельных операций записи на уровне «документа». Это значит что несколько клиентских приложений могут модифицировать разные «документы» в коллекции единовременно.
Механизм WiredTiger использует оперативную память для внутреннего кеша (т.н. «internal cache»), в котором хранится информация из базы данных, для максимально быстрого доступа к документам.
Для установки MongoDB на хостинге Hostland доступно несколько тарифов, с разным размером «internal cache»:
В рамках всей линейки тарифов «TURBO» данная услуга предоставляется совершенно бесплатно в максимальной конфигурации.
Хранимые данные в MongoDB будут доступны только Вашему аккаунту. Параметры подключения по умолчанию:
host: localhost
port: 27017
// подключение к MongoDB [user@server ~]$ mongo // создание БД use Company // создание коллекции db.createCollection( "employees", { validator: { name: {$type: "string"}, surname: {$type: "string"}, age: {$type: "number"} } } ); // добавление документов в коллекцию db.employees.insert({name: "Ivan", surname: "Petrov", age: 32}); db.employees.insert({name: "Vasiliy", surname: "Ivanov", age: 37}); db.employees.insert({name: "Marina", surname: "Stepanova", age: 28}); // вывод всех документов из коллекции db.employees.find();
// подключение Express const express = require('express'); const app = express(); // использование плагина mongodb const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017'; const dbName = 'CLIENTS'; // добавление, удаление и вывод коллекции на экран app.get('/test', function(req, res, next) { // подключение к БД MongoClient.connect(url, function(err, client) { console.log("Connected successfully to test"); const db = client.db(dbName); // добавление документов /* db.collection('test', function(err, collection) { collection.insert({'name':'Liza', 'age': 12}); collection.insert({'name':'Agatha', 'age': 20}); collection.insert({'name':'Sam', 'age': 6}); }); */ // удаление документов /* db.collection("test").deleteMany({name: "Liza"}, function(err, result) { console.log(result); }); */ // создание коллекции const cltn = db.collection('test'); // вывод записей на страницу cltn.find({}).toArray(function(err, docs) { let str = ''; docs.forEach((item) => { str += item.name + ' '; str += item.age + '
'; }); res.send(str); }); }); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); });
// установка соединения с БД $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); // первая команда - пингование сервера $command = new MongoDB\Driver\Command(['ping' => 1]); $cursor = $manager->executeCommand('db', $command); $response = $cursor->toArray()[0]; print_r($response); // записываем (при повторном запуске - дозаписываем) в БД некий двумерный масив $bulk = new MongoDB\Driver\BulkWrite; $bulk->insert(['x' => 1, 'y' => 'foo']); $bulk->insert(['x' => 2, 'y' => 'bar']); $bulk->insert(['x' => 3, 'y' => 'bar']); $manager->executeBulkWrite('db.collection', $bulk); // группируем элементы массива в базе по осям $command = new MongoDB\Driver\Command([ 'aggregate' => 'collection', 'pipeline' => [ ['$group' => ['_id' => '$y', 'sum' => ['$sum' => '$x']]], ], 'cursor' => new stdClass, ]); $cursor = $manager->executeCommand('db', $command); // выводим результат группировки массива foreach ($cursor as $document) { print_r($document); }
Для взаимодействия с MongoDB мы рекомендуем использовать GUI(графический интерфейс) Compass, специально разработанный для работы с данными MongoDB. Подробнее о Compass Вы можете узнать из данной статьи
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Написать нам».