Выполняет команду базы данных на сервере

# MongoDB\Driver\Server::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeCommand — Выполняет команду базы данных на сервере

### Описание

final public function MongoDB\Driver\Server::executeCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Метод выполняет команду на сервере.

Этот метод не применяет специальной логики к команде. Значения по умолчанию для параметров `readPreference`, `readConcern` и `writeConcern` метод получит из активной транзакции, которую обозначает параметр `session`. Если активной транзакции нет, для выбора сервера будет использоваться основное предпочтение чтения.

Метод не получает значения по умолчанию из URI-идентификатора соединения. Поэтому пользователям рекомендуют по возможности использовать конкретные методы команд чтения и (или) записи.

> Замечание: Опция `"readPreference"` не управляет сервером, на который драйвер отправляет операцию; опция выполняется только на этом объекте сервера. Вместо этого опцию указывают при выполнении операции на вторичном узле (из соединения с набором реплик, а не на автономном) или на узле mongos, чтобы гарантировать, что драйвер устанавливает правильный протокол передачи данных или добавляет предпочтение чтения к операции.

### Список параметров

`db` (string)
  Название базы данных, в которой запускается команда.
`command` (MongoDB\Driver\Command)
  Команда для выполнения.
`options`

  options
  Опция | Тип | Описание
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | Гарантия чтения для применения к операции. Эта опция доступна в MongoDB 3.2+ и приведёт к исключению во время выполнения, если указана для более старой версии сервера.
  readPreference | MongoDB\Driver\ReadPreference | Предпочтение чтения, используемая для выбора сервера для выполнения операции.
  session | MongoDB\Driver\Session | Сессия для связывания с операцией.
  writeConcern | MongoDB\Driver\WriteConcern | Гарантия записи для применения к операции.

  Внимание

  С парметром `"session"` и при незавершённых транзакциях нельзя указать параметр `"readConcern"` или `"writeConcern"`. Это выбросит исключение MongoDB\Driver\Exception\InvalidArgumentException. Вместо этого две этих опции устанавливают методом MongoDB\Driver\Session::startTransaction(), когда создают транзакцию.

### Возвращаемые значения

Метод возвращает курсор MongoDB\Driver\Cursor, если выполнился успешно.

### Ошибки

- Выбрасывается исключение MongoDB\Driver\Exception\InvalidArgumentException, если опция `"session"` указана с соответствующей транзакцией в сочетании с опцией `"readConcern"` или `"writeConcern"`.
- Выбрасывается MongoDB\Driver\Exception\InvalidArgumentException, если опция `"session"` указана в сочетании с неподтверждённой гарантией записи.
- При ошибке парсинга аргумента метод выбрасывает исключение MongoDB\Driver\Exception\InvalidArgumentException.
- При неудачном соединении с сервером (кроме ошибок аутентификации) метод выбрасывает исключение MongoDB\Driver\Exception\ConnectionException.
- При неудачной аутентификации метод выбрасывает исключение MongoDB\Driver\Exception\AuthenticationException.
- При других ошибках наподобие неправильной команды или выдачи команды записи на вторичное устройство метод выбрасывает исключение MongoDB\Driver\Exception\RuntimeException.

### Список изменений

Версия | Описание
--- | ---
PECL-модуль mongodb 2.0.0 | Параметр `options` больше не принимает объекты MongoDB\Driver\ReadPreference.
PECL-модуль mongodb 1.21.0 | Передача объекта MongoDB\Driver\ReadPreference как опции параметра `options` устарела, а с версии 2.0 передачу объекта запретят.
PECL-модуль mongodb 1.4.4 | Метод выбросит исключение MongoDB\Driver\Exception\InvalidArgumentException, если опцию `"session"` указать вместе с неподтверждаемым уровнем записи.
PECL-модуль mongodb 1.4.0 | Третий параметр `options` стал массивом опций, но в целях обратной совместимости пока ещё принимает объект MongoDB\Driver\ReadPreference.

### Примечания

> Замечание: Ответственность вызывающего кода заключается в том, что сервер в состоянии выполнять операцию записи. Например, выполнение операции записи на вторичном узле (исключая «локальную» базу данных) завершится неудачей.

### Смотрите также

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Server::executeReadCommand() - Выполняет команду базы данных, которая читает на сервере
- MongoDB\Driver\Server::executeReadWriteCommand() - Выполняет команду базы данных, которая читает и пишет на сервере
- MongoDB\Driver\Server::executeWriteCommand() - Выполняет команду базы данных, которая пишет на сервере
- MongoDB\Driver\Manager::executeCommand() - Выполняет команду базы данных

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open