MongoDB\Driver\Manager::executeCommand
(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeCommand — Виконує команду бази даних
Опис
final public MongoDB\Driver\Manager::executeCommand(string $db, MongoDB\Driver\Command $command, array|MongoDB\Driver\ReadPreference|null $options = null): MongoDB\Driver\Cursor
Вибирає сервер відповідно до опції "readPreference"
та виконує команду на цьому сервері. За промовчанням буде вибрано основний сервер.
Цей метод не застосовує особливої логіки до команди. Хоча цей метод приймає "readConcern"
и"writeConcern"
, які будуть включені в документи коанди, ці опції не будуть відповідати значенням за замовчуванням MongoDB URI з'єднання , і не враховуватиметься версія сервера MongoDB. Тому користувачам рекомендується використовувати конкретні методи команди читання та/або запису, якщо це можливо.
Список параметрів
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"
or"writeConcern"
option. Це призведе до викидання винятків 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 1.4.4 | Якщо опція "session" використовується у поєднанні з непідтвердженою гарантією запису, викидається виняток MongoDB\Driver\Exception\InvalidArgumentException |
PECL mongodb 1.4.0 | Третій параметр тепер є масивом options . . Для зворотної сумісності цей параметр все одно прийме об'єкт MongoDB\Driver\ReadPreference |
Приклади
Приклад #1 Приклад використання MongoDB\Driver\Manager::executeCommand()** з командою, що повертає одиночний документ**
Loading...
Результат виконання наведеного прикладу:
array(1) {
["ok"]=>
float(1)
}
Приклад #2 Приклад використання MongoDB\Driver\Manager::executeCommand()** з командою, що повертає курсор**
Loading...
Результат виконання наведеного прикладу:
object(stdClass)#6 (2) {
["_id"]=>
string(3) "bar"
["sum"]=>
int(10)
}
object(stdClass)#7 (2) {
["_id"]=>
string(3) "foo"
["sum"]=>
int(2)
}
Приклад #3 Обмеження часу виконання запиту
Опция"maxTimeMS"
классаMongoDB\Driver\Query може використовуватись для обмеження часу виконання запиту. Зауважте, що цей термін застосовується на стороні сервера і не враховує затримки мережі. Дивіться » Завершення виконання операцій у посібнику MongoDB для отримання додаткової інформації.
Loading...
Якщо запит не завершиться через секунду після початку виконання на сервері, буде викинуто виняток MongoDB\Driver\Exception\ExecutionTimeoutException
Примітки
Зауваження: Якщо буде використаний вторинний сервер із опції
readPreference
, то код, що викликає, бере на себе відповідальність за гарантію виконання командиcommand
на вторинному вузлі. Драйвер не перевірить.
Зауваження: Цей метод - не метод за замовчуванням, щоб отримати переваги читання з URI-адреси підключення MongoDB. Програми, яким потрібна ця поведінка, можуть викликати метод MongoDB\Driver\Manager::executeReadCommand()
Дивіться також
- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Manager::executeReadCommand() - Виконує команду бази даних, яка читає
- MongoDB\Driver\Manager::executeReadWriteCommand() - Виконує команду бази даних, яка читає та пише
- MongoDB\Driver\Manager::executeWriteCommand() - Виконує команду бази даних, що пише
- MongoDB\Driver\Server::executeCommand() - Виконати команду бази даних на сервері