madewithlove/broadway-mongodb
, (*1)
A MongoDB driver for Broadway based on mongodb/mongodb., (*2)
Goals
Install
This package has the same requirements as mongodb/mongodb., (*3)
$ pecl install mongodb
$ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
Via Composer, (*4)
``` bash
$ composer require madewithlove/broadway-mongodb, (*5)
## Usage
### `MongoDBClientFactory`
This package ships with a factory to build a `MongoDB\Client`.
#### Using default values
```php
$factory = new MongoDBClientFactory();
$client = $factory->create(['database' => 'foobar']);
Creating a client for a specific host and port
$factory = new MongoDBClientFactory();
$client = $factory->create([
'database' => 'foobar',
'host' => 'my_host',
'port' => 3000,
]);
// Or alternatively
$client = $factory->create([
'database' => 'foobar',
'host' => 'my_host:3000',
]);
Creating a client for multiple hosts
The hosts option can also be an array for multiple hosts, (*6)
$factory = new MongoDBClientFactory();
$client = $factory->create([
'database' => 'foobar',
'host' => ['my_host_1', 'my_host_2'],
]);
Creating a client for with username and password
If you have to authenticate to your MongoDB database you can pass the username and password, (*7)
$factory = new MongoDBClientFactory();
$client = $factory->create([
'database' => 'foobar',
'username' => 'foo',
'password' => 'bar',
]);
Creating a client using a dsn string
Alternatively you can pass a dsn string and it will be used to connect, (*8)
$factory = new MongoDBClientFactory();
$client = $factory->create([
'dsn' => 'mongodb://foo:200/foo',
]);
ReadModel
This package ships with a basic MongoDBRepository class you can either use directly or extend to build your own repositories., (*9)
The easiest way to create a repository for your model is by using the ReadModel\Factory:, (*10)
```php, (*11)
$mongDBClientFactory = new MongoDBClientFactory();
$client = $factory->create(['database' => 'testing']);, (*12)
$factory = new ReadModel\Factory(
new SimpleInterfaceSerializer(),
$client->selectDatabase('testing')
);, (*13)
// 'my_projection' is the collection that will be used.
$repository = $factory->create('my_projector');, (*14)
// If you have a custom read model repository you can use the factory to create your own instances:
$repository = $factory->create('my_projector', MyReadModelRepository::class);, (*15)
```, (*16)
Testing
bash
$ composer test, (*17)
License
The MIT License (MIT). Please see License File for more information., (*18)