, (*1)
Mongodb for Cakephp3
An Mongodb datasource for CakePHP 3.5, (*2)
Installing via composer
Install composer and run:, (*3)
composer require hayko/mongodb dev-master
Connecting the Plugin to your application
add the following line in your config/bootstrap.php to tell your application to load the plugin:, (*4)
Plugin::load('Hayko/Mongodb');
Defining a connection
Now, you need to set the connection in your config/app.php file:, (*5)
'Datasources' => [
'default' => [
'className' => 'Hayko\Mongodb\Database\Connection',
'driver' => 'Hayko\Mongodb\Database\Driver\Mongodb',
'persistent' => false,
'host' => 'localhost',
'port' => 27017,
'login' => '',
'password' => '',
'database' => 'devmongo',
'ssh_host' => '',
'ssh_port' => 22,
'ssh_user' => '',
'ssh_password' => '',
'ssh_pubkey_path' => '',
'ssh_privatekey_path' => '',
'ssh_pubkey_passphrase' => ''
],
],
SSH tunnel variables (starting with 'ssh_')
If you want to connect to MongoDB using a SSH tunnel, you need to set additional variables in your Datasource. Some variables are unnecessary, depending on how you intend to connect. IF you're connecting using a SSH key file, the ssh_pubkey_path
and ssh_privatekey_path
variables are necessary and the ssh_password
variable is unnecessary. If you're connecting using a text-based password (which is not a wise idea), the reverse is true. The function needs, at minimum, ssh_host
, ssh_user
and one method of authentication to establish a SSH tunnel., (*6)
Models
After that, you need to load Hayko\Mongodb\ORM\Table in your tables class:, (*7)
//src/Model/Table/YourTable.php
use Hayko\Mongodb\ORM\Table;
class CategoriesTable extends Table {
}
Observations
The function find() works only in the old fashion way.
So, if you want to find something, you to do like the example:, (*8)
$this->Categories->find('all', ['conditions' => ['name' => 'teste']]);
$this->Categories->find('all', ['conditions' => ['name LIKE' => 'teste']]);
$this->Categories->find('all', ['conditions' => ['name' => 'teste'], 'limit' => 3]);
You can also use the advanced conditions of MongoDB using the MongoDB\BSON
namespace, (*9)
$this->Categories->find('all', ['conditions' => [
'_id' => new \MongoDB\BSON\ObjectId('5a7861909db0b47d605c3865'),
'foo.bar' => new \MongoDB\BSON\Regex('^(foo|bar)?baz$', 'i')
]]);
LICENSE
The MIT License (MIT) Copyright (c) 2013, (*10)