MongoDB\Driver\Manager::executeQuery
(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Executa uma consulta ao banco de dados
Descrição
$namespace
, MongoDB\Driver\Query $query
, array|MongoDB\Driver\ReadPreference|null $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.
Parâmetros
namespace
(string)-
Um namespace totalmente qualificado (por exemplo,
"nomeDoBancoDados.nomeDaColecao"
). query
(MongoDB\Driver\Query)-
A consulta a ser executada.
options
-
Opções 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.
Valor Retornado
Retorna MongoDB\Driver\Cursor em caso de sucesso.
Erros/Exceções
- Lança uma exceção MongoDB\Driver\Exception\InvalidArgumentException em caso de erro ao analisar argumentos.
- Lança uma exceção MongoDB\Driver\Exception\ConnectionException se a conexão com o servidor falhar (por outros motivos além da autenticação).
- Lança uma exceção MongoDB\Driver\Exception\AuthenticationException se a autenticação for necessária e falhar.
- Lança uma MongoDB\Driver\Exception\RuntimeException em outros erros (ex.: operadores inválidos de consulta).
Registro de Alterações
Versão | Descrição |
---|---|
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.
|
Exemplos
Example #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) }
Example #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.
Veja Também
- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - Executa uma consulta de banco de dados neste servidor