Monga alternatives and similar libraries
Based on the "NoSQL" category.
Alternatively, view Monga alternatives based on common mentions on social networks and blogs.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Monga or a related project?
Popular Comparisons
README
Monga
A simple and swift MongoDB abstraction layer for PHP 5.4+
What's this all about?
- An easy API to get connections, databases and collections.
- A filter builder that doesn't make your mind go nuts.
- All sorts of handy update functions.
- An abstraction for sorting single results.
- GridFS support for a Mongo filesystem.
- Easy aggregation and distinct values.
Vision
Monga was created with the acknowledgment of the MongoDB PHP package already being pretty awesome. That's why in a lot of cases Monga is just a simple wrapper around the MongoDB classes. It provides some helpers and helps you set up queries using a query builder. Which you can also choose not to use! Everything will still work accordingly. During the development, a lot of planning has gone into creating a nice streamlined API that closely follows the MongoDB base classes, while complementing existing query builders for SQL-like databases.
Install
Via Composer
$ composer require league/monga
Usage
use League\Monga;
// Get a connection
$connection = Monga::connection($dns, $connectionOptions);
// Get the database
$database = $connection->database('db_name');
// Drop the database
$database->drop();
// Get a collection
$collection = $database->collection('collection_name');
// Drop the collection
$collection->drop();
// Truncate the collection
$collection->truncate();
// Insert some values into the collection
$insertIds = $collection->insert([
[
'name' => 'John',
'surname' => 'Doe',
'nick' => 'The Unknown Man',
'age' => 20,
],
[
'name' => 'Frank',
'surname' => 'de Jonge',
'nick' => 'Unknown',
'nik' => 'No Man',
'age' => 23,
],
]);
// Update a collection
$collection->update(function ($query) {
$query->increment('age')
->remove('nik')
->set('nick', 'FrenkyNet');
});
// Find Frank
$frank = $collection->findOne(function ($query) {
$query->where('name', 'Frank')
->whereLike('surname', '%e Jo%');
});
// Or find him using normal array syntax
$frank = $collection->find([
'name' => 'Frank',
'surname' => new MongoRegex('/e Jo/imxsu')
]);
$frank['age']++;
$collection->save($frank);
// Also supports nested queries
$users = $collection->find(function ($query) {
$query->where(function ($query) {
$query->where('name', 'Josh')
->orWhere('surname', 'Doe');
})->orWhere(function ($query) {
$query->where('name', 'Frank')
->where('surname', 'de Jonge');
});
});
// get the users as an array
$arr = $users->toArray();
Aggregation
A big part of the newly released MongoDB pecl package is aggregation support. Which is super easy to do with Monga:
$collection->aggregate(function ($a) {
$a->project([
'name' => 1,
'surname' => -1,
'tags' => 1,
])->unwind('tags');
// But also more advanced groups/projections
$a->project(function ($p) {
$p->select('field')
->select('scores')
->exclude('other_field');
})->group(function ($g) {
$g->by(['$name', '$surname'])
->sum('scores');
});
});
Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
- Frank de Jonge
- [All Contributors][link-contributors]
License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
*Note that all licence references and agreements mentioned in the Monga README section above
are relevant to that project's source code only.