(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Executa uma consulta ao banco de dados
$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.
namespace
(string)
Um namespace totalmente qualificado (por exemplo, "nomeDoBancoDados.nomeDaColecao"
).
query
(MongoDB\Driver\Query)A consulta a ser executada.
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 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.