public function testCollectionsFind()
{
$this->loadData();
//Without Params
$cars = Cars::find();
$this->assertTrue(is_array($cars));
$this->assertInstanceOf('Phalcon\\Mvc\\MongoCollection', $cars[0]);
$this->assertCount(5, $cars);
//With Params
$ferraris = Cars::find([['manufacturer' => 'Ferrari']]);
$this->assertCount(2, $ferraris);
//Limit
$ferraris = Cars::find([['manufacturer' => 'Ferrari'], 'limit' => 1]);
$this->assertCount(1, $ferraris);
$this->assertEquals('488 GTB', $ferraris[0]->model);
//Skip
$ferraris = Cars::find([['manufacturer' => 'Ferrari'], 'limit' => 1, 'skip' => 1]);
$this->assertCount(1, $ferraris);
$this->assertEquals('LaFerrari', $ferraris[0]->model);
//Sort ASC
$ferraris = Cars::find([['manufacturer' => 'Ferrari'], 'sort' => ['rank' => 1]]);
$this->assertCount(2, $ferraris);
$this->assertEquals('488 GTB', $ferraris[0]->model);
//Sort DESC
$ferraris = Cars::find([['manufacturer' => 'Ferrari'], 'sort' => ['rank' => -1]]);
$this->assertCount(2, $ferraris);
$this->assertEquals('LaFerrari', $ferraris[0]->model);
//Fields
$cars = Cars::find(['fields' => ['manufacturer' => true, 'model' => true]]);
$this->assertCount(5, $cars);
$this->assertObjectNotHasAttribute('rank', $cars[0]);
//$gt
$cars = Cars::find([['rank' => ['$gt' => 2]]]);
$this->assertCount(3, $cars);
$this->assertEquals('488 GTB', $cars[0]->model);
//$lt
$cars = Cars::find([['rank' => ['$lt' => 3]]]);
$this->assertCount(2, $cars);
$this->assertEquals('650S', $cars[0]->model);
//More Complex Query
$cars = Cars::find([['rank' => ['$lt' => 3]], 'fields' => ['model' => true, 'rank' => true], 'sort' => ['rank' => -1]]);
$this->assertCount(2, $cars);
$this->assertEquals('911 GT3', $cars[0]->model);
$this->assertObjectNotHasAttribute('manufacturer', $cars[0]);
$this->clearData();
}