/
home
/
obinna
/
html
/
cravings
/
vendor
/
mongodb
/
mongodb
/
tests
/
Operation
/
Upload File
HOME
<?php namespace MongoDB\Tests\Operation; use MongoDB\Operation\Count; use MongoDB\Operation\CreateIndexes; use MongoDB\Operation\InsertMany; use MongoDB\Tests\CommandObserver; use function version_compare; class CountFunctionalTest extends FunctionalTestCase { public function testDefaultReadConcernIsOmitted() { (new CommandObserver())->observe( function () { $operation = new Count( $this->getDatabaseName(), $this->getCollectionName(), [], ['readConcern' => $this->createDefaultReadConcern()] ); $operation->execute($this->getPrimaryServer()); }, function (array $event) { $this->assertObjectNotHasAttribute('readConcern', $event['started']->getCommand()); } ); } public function testHintOption() { $insertMany = new InsertMany($this->getDatabaseName(), $this->getCollectionName(), [ ['x' => 1], ['x' => 2], ['y' => 3], ]); $insertMany->execute($this->getPrimaryServer()); $createIndexes = new CreateIndexes($this->getDatabaseName(), $this->getCollectionName(), [ ['key' => ['x' => 1], 'sparse' => true, 'name' => 'sparse_x'], ['key' => ['y' => 1]], ]); $createIndexes->execute($this->getPrimaryServer()); $hintsUsingSparseIndex = [ ['x' => 1], 'sparse_x', ]; /* Per SERVER-22041, the count command in server versions before 3.3.2 * may ignore the hint option if its query predicate is empty. */ $filter = ['_id' => ['$exists' => true]]; foreach ($hintsUsingSparseIndex as $hint) { $operation = new Count($this->getDatabaseName(), $this->getCollectionName(), $filter, ['hint' => $hint]); $this->assertSame(2, $operation->execute($this->getPrimaryServer())); } $hintsNotUsingSparseIndex = [ ['_id' => 1], ['y' => 1], 'y_1', ]; foreach ($hintsNotUsingSparseIndex as $hint) { $operation = new Count($this->getDatabaseName(), $this->getCollectionName(), $filter, ['hint' => $hint]); $this->assertSame(3, $operation->execute($this->getPrimaryServer())); } } public function testSessionOption() { if (version_compare($this->getServerVersion(), '3.6.0', '<')) { $this->markTestSkipped('Sessions are not supported'); } (new CommandObserver())->observe( function () { $operation = new Count( $this->getDatabaseName(), $this->getCollectionName(), [], ['session' => $this->createSession()] ); $operation->execute($this->getPrimaryServer()); }, function (array $event) { $this->assertObjectHasAttribute('lsid', $event['started']->getCommand()); } ); } }