(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Executa uma consulta ao banco de dados
$namespace, MongoDB\Driver\Query $query, ?array $options = null): MongoDB\Driver\Cursor
Seleciona um servidor de acordo com a opção "readPreference"
e executa a consulta nesse servidor.
Os valores padrão para a opção "readPreference" e para a opção
"readConcern" da consulta serão inferidos de uma transação
ativa (indicada pela opção "session"), seguidos
pelo URI de conexão.
namespace (string)"nomeDoBancoDados.nomeDaColecao").
query (MongoDB\Driver\Query)options
| Opção | Tipo | Descrição |
|---|---|---|
| readPreference | MongoDB\Driver\ReadPreference | Uma preferência de leitura a ser usada para selecionar um servidor para a operação. |
| session | MongoDB\Driver\Session | Uma sessão para associar à operação. |
Retorna MongoDB\Driver\Cursor em caso de sucesso.
| Versão | Descrição |
|---|---|
| PECL mongodb 2.0.0 |
O parâmetro options não aceita mais uma instância
de MongoDB\Driver\ReadPreference.
|
| PECL mongodb 1.21.0 |
Passar um objeto MongoDB\Driver\ReadPreference como
options foi descontinuado e será removido na versão 2.0.
|
| PECL mongodb 1.4.0 |
O terceiro parâmetro agora é um array options.
Para compatibilidade com versões anteriores, este parâmetro ainda aceitará um
objeto MongoDB\Driver\ReadPreference.
|
Exemplo #1 Exemplo de MongoDB\Driver\Manager::executeQuery()
<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);
$filter = ['x' => ['$gt' => 1]];
$options = [
'projection' => ['_id' => 0],
'sort' => ['x' => -1],
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>O exemplo acima produzirá:
object(stdClass)#6 (1) {
["x"]=>
int(3)
}
object(stdClass)#7 (1) {
["x"]=>
int(2)
}
Exemplo #2 Limitando o tempo de execução de uma consulta
A opção "maxTimeMS"
da classeMongoDB\Driver\Query pode ser usada para limitar o
tempo de execução de uma consulta. Observe que esse limite de tempo é aplicado no
lado do servidor e não leva em consideração a latência da rede. Consulte
» Encerrar Operações em Execução
no manual do MongoDB para obter mais informações.
<?php
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$filter = ['x' => ['$gt' => 1]];
$options = [
'maxTimeMS' => 1000,
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>Se a consulta não for concluída após um segundo de tempo de execução no servidor, uma MongoDB\Driver\Exception\ExecutionTimeoutException será lançada.