芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/public_html/cepali/cache/stores/mongodb/MongoDB/Operation/CountDocuments.php
isDefault()) { unset($options['readConcern']); } $this->databaseName = (string) $databaseName; $this->collectionName = (string) $collectionName; $this->filter = $filter; $this->options = $options; } /** * Execute the operation. * * @see Executable::execute() * @param Server $server * @return integer * @throws UnexpectedValueException if the command response was malformed * @throws UnsupportedException if collation or read concern is used and unsupported * @throws DriverRuntimeException for other driver errors (e.g. connection errors) */ public function execute(Server $server) { if (isset($this->options['collation']) && ! \MongoDB\server_supports_feature($server, self::$wireVersionForCollation)) { throw UnsupportedException::collationNotSupported(); } if (isset($this->options['readConcern']) && ! \MongoDB\server_supports_feature($server, self::$wireVersionForReadConcern)) { throw UnsupportedException::readConcernNotSupported(); } $cursor = $server->executeReadCommand($this->databaseName, new Command($this->createCommandDocument()), $this->createOptions()); $allResults = $cursor->toArray(); /* If there are no documents to count, the aggregation pipeline has no items to group, and * hence the result is an empty array (PHPLIB-376) */ if (count($allResults) == 0) { return 0; } $result = current($allResults); if ( ! isset($result->n) || ! (is_integer($result->n) || is_float($result->n))) { throw new UnexpectedValueException('count command did not return a numeric "n" value'); } return (integer) $result->n; } /** * Create the count command document. * * @return array */ private function createCommandDocument() { $pipeline = [ ['$match' => (object) $this->filter] ]; if (isset($this->options['skip'])) { $pipeline[] = ['$skip' => $this->options['skip']]; } if (isset($this->options['limit'])) { $pipeline[] = ['$limit' => $this->options['limit']]; } $pipeline[] = ['$group' => ['_id' => null, 'n' => ['$sum' => 1]]]; $cmd = [ 'aggregate' => $this->collectionName, 'pipeline' => $pipeline, 'cursor' => (object) [], ]; if (isset($this->options['collation'])) { $cmd['collation'] = (object) $this->options['collation']; } if (isset($this->options['hint'])) { $cmd['hint'] = is_array($this->options['hint']) ? (object) $this->options['hint'] : $this->options['hint']; } if (isset($this->options['maxTimeMS'])) { $cmd['maxTimeMS'] = $this->options['maxTimeMS']; } return $cmd; } /** * Create options for executing the command. * * @see http://php.net/manual/en/mongodb-driver-server.executereadcommand.php * @return array */ private function createOptions() { $options = []; if (isset($this->options['readConcern'])) { $options['readConcern'] = $this->options['readConcern']; } if (isset($this->options['readPreference'])) { $options['readPreference'] = $this->options['readPreference']; } if (isset($this->options['session'])) { $options['session'] = $this->options['session']; } return $options; } }