This package is abandoned and no longer maintained. The author suggests using the league/monga package instead.

MongoDB Abstraction Layer

1.2.4 2016-02-29 17:56 UTC


Latest Version on Packagist Software License Build Status Total Downloads

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.


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.


Via Composer

$ composer require league/monga


use League\Monga;

// Get a connection
$connection = Monga::connection($dns, $connectionOptions);

// Get the database
$database = $connection->database('db_name');

// Drop the database

// Get a collection
$collection = $database->collection('collection_name');

// Drop the collection

// Truncate the collection

// 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) {
		->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')



// 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();


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) {
		'name' => 1,
		'surname' => -1,
		'tags' => 1,

	// But also more advanced groups/projections
	$a->project(function ($p) {
	})->group(function ($g) {
		$g->by(['$name', '$surname'])


Please see CONTRIBUTING and CONDUCT for details.


If you discover any security related issues, please email instead of using the issue tracker.



The MIT License (MIT). Please see License File for more information.