Phalcon\Db\Adapter\MongoDB\Operation\BulkWrite::execute PHP Метод

execute() публичный Метод

Execute the operation.
См. также: Executable::execute()
public execute ( MongoDB\Driver\Server $server ) : BulkWriteResult
$server MongoDB\Driver\Server
Результат Phalcon\Db\Adapter\MongoDB\BulkWriteResult
    public function execute(Server $server)
    {
        $options = ['ordered' => $this->options['ordered']];
        if (isset($this->options['bypassDocumentValidation']) && Functions::serverSupportsFeature($server, self::$wireVersionForDocumentLevelValidation)) {
            $options['bypassDocumentValidation'] = $this->options['bypassDocumentValidation'];
        }
        $bulk = new Bulk($options);
        $insertedIds = [];
        foreach ($this->operations as $i => $operation) {
            $type = key($operation);
            $args = current($operation);
            switch ($type) {
                case self::DELETE_MANY:
                case self::DELETE_ONE:
                    $bulk->delete($args[0], $args[1]);
                    break;
                case self::INSERT_ONE:
                    $insertedId = $bulk->insert($args[0]);
                    if ($insertedId !== null) {
                        $insertedIds[$i] = $insertedId;
                    } else {
                        $insertedIds[$i] = Functions::extractIdFromInsertedDocument($args[0]);
                    }
                    break;
                case self::REPLACE_ONE:
                case self::UPDATE_MANY:
                case self::UPDATE_ONE:
                    $bulk->update($args[0], $args[1], $args[2]);
            }
        }
        $writeConcern = isset($this->options['writeConcern']) ? $this->options['writeConcern'] : null;
        $writeResult = $server->executeBulkWrite($this->databaseName . '.' . $this->collectionName, $bulk, $writeConcern);
        return new BulkWriteResult($writeResult, $insertedIds);
    }

Usage Example

Пример #1
0
 /**
  * Executes multiple write operations.
  *
  * @see BulkWrite::__construct() for supported options
  *
  * @param array[] $operations List of write operations
  * @param array   $options Command options
  *
  * @return BulkWriteResult
  */
 public function bulkWrite(array $operations, array $options = [])
 {
     if (!isset($options['writeConcern'])) {
         $options['writeConcern'] = $this->writeConcern;
     }
     $operation = new BulkWrite($this->databaseName, $this->collectionName, $operations, $options);
     $server = $this->manager->selectServer(new ReadPreference(ReadPreference::RP_PRIMARY));
     return $operation->execute($server);
 }