MongoDB
Компонент добавляет на сайт документо-ориентированную систему управления базами данных MongoDB.
http://ru.wikipedia.org/wiki/MongoDB
http://docs.mongodb.org/manual/
После установки, при желании, вы можете полность исключить СУБД MySQL из своего проекта, либо использовать СУБД MySQL и СУБД MongoDB параллельно.
Учтите, что многие компоненты Micron используют MySQL и не будут работать с MongoDB.
Настройка подключения(-ий) к БД
Настройка подключения и работы с БД находятся в файле /core/config/mongodb.php, рассмотрим параметры этого файла подбробнее:
-
$g_config['dbMongo']['databases'] - массив в котором содержатся все подключения к базам данных в формате DSN.
Подробнее о DSN можно почитать документации.Рассмотрим пример:
$g_config['dbMongo']['databases'] = array ( 'db' => array('dsn' => 'mongodb://root:@localhost/test_db') );
Здесь есть
- db - имя создаваемого подключения к БД, т.е. после к объекту dbMongo работающему с этим подключением можно будет обращаться так: $g_mongoDatabases->db
- mongodb://root:@localhost/test_db - само подключение в формате DSN
Стоит отметить, что часто при разработке сайта, программист работает с локальной копией БД, конечно он мог бы каждый раз править подключение перед заливкой файлов на сервер, однако куда удобнее сделать вот так:
$g_config['dbMongo']['databases'] = array ( 'db' => array ( // DEBUG_MODE - будет true только на локальной копии 'dsn' => DEBUG_MODE ? 'mongodb://localhost/test_db' : "mongodb://User:Pwd@127.0.0.1/dataBaseName", // Если сервер то настоящая БД ) );
Что бы работать с разными БД сразу, Вам нужно лишь перечислить их в массиве подключений и дать имя будущему объекту для обращения
$g_config['dbMongo']['databases'] = array ( 'db' => array('dsn' => 'mongodb://root:@localhost/main_db'), 'dbPayments' => array('dsn' => 'mongodb://root:@localhost/payments_db'), 'dbLogger' => array('dsn' => 'mongodb://root:@localhost/logger_db'), );
В приведённом выше примере, я создал 3 подключения к разным БД, обращаться к ним мне нужно будет $g_mongoDatabases->db, $g_mongoDatabases->dbPayments, $g_mongoDatabases->dbLogger соответственно.
Работа с моделями
Модель - класс предназначенный для работы с данными объектов системы.
Работа с MySQL моделями уже описана в соответствующем разделе документации.
По аналогиий с базовым классом Model, для MongoDB имеется соответствующий базовый класс MongoModel.
Хранится он там же, где и остальные модели (в папке /model).
Главное отличие MongoModel от Model это отсутствие метода CreateTable(), так как в MongoDB поля объекта задаются произвольно (в момент присвоения).
Второе отличие это ключевое поле. В MongoModel оно всегда имеет имя _id.
Подробнее об _id в MongoDB и о том как оно генерируется можно почитать в официальной документации:
http://docs.mongodb.org/manual/reference/object-id/
Далее идет пример простой модели пользователя.
В соответствии со своим именем, готовая модель должна быть расположена по адресу /model/UserMongoModel.php
class UserMongoModel extends MongoModel { public function __construct($id = NULL, $readOnly = false) { global $g_mongoDatabases; $collection = $g_mongoDatabases->users; // Таблица (коллекция) users создаётся при первом обращении (то есть здесь) parent::__construct($collection, $id, $readOnly); } public function FindAll($from = 0, $count = 0xffff, &$total = 0) { $cursor = $this->collection->find(array(), array("_id" => 1)); $total = $cursor->count(); $arr = $cursor->skip($from)->limit($count); $ret = array(); foreach ($arr as $a) { $ret[] = $a["_id"]->__toString(); } return $ret; } };