(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Ejecuta una consulta de base de datos
$namespace
, MongoDB\Driver\Query $query
, ?array $options
= null
): MongoDB\Driver\Cursor
Selecciona un servidor en función de la opción "readPreference"
y ejecuta la consulta en ese servidor.
Los valores por omisión de la opción "readPreference"
y de
la opción "readConcern"
de la consulta serán deducidos a
partir de una transacción activa (indicada por la opción "session"
),
seguida de la URI de conexión.
namespace
(string)
Un espacio de nombres completamente cualificado (p. ej. "nombreBaseDatos.nombreColección"
).
query
(MongoDB\Driver\Query)La consulta a ejecutar.
options
Option | Type | Description |
---|---|---|
readPreference | MongoDB\Driver\ReadPreference |
Una preferencia de lectura a usar para seleccionar un servidor para la operación. |
session | MongoDB\Driver\Session |
Una sesión a asociar con la operación. |
Devuelve un MongoDB\Driver\Cursor en caso de éxito.
Versión | Descripción |
---|---|
PECL mongodb 2.0.0 |
El parámetro options ya no acepta
una instancia de MongoDB\Driver\ReadPreference.
|
PECL mongodb 1.21.0 |
Pasar un objeto MongoDB\Driver\ReadPreference como
options está obsoleto y será eliminado en la 2.0.
|
PECL mongodb 1.4.0 |
El tercer parámetro es ahora un array options .
Por razones de compatibilidad ascendente, este parámetro siempre aceptará un
objeto MongoDB\Driver\ReadPreference.
|
Ejemplo #1 Ejemplo 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);
}
?>
El resultado del ejemplo sería:
object(stdClass)#6 (1) { ["x"]=> int(3) } object(stdClass)#7 (1) { ["x"]=> int(2) }
Ejemplo #2 Limitar el tiempo de ejecución de una consulta
La opción "maxTimeMS"
de la clase
MongoDB\Driver\Query puede ser utilizada para limitar
el tiempo de ejecución de una consulta. Tenga en cuenta que este límite de tiempo es
aplicado en el lado del servidor y no tiene en cuenta la latencia de la red. Ver
» Terminar las operaciones en curso
en el manual de MongoDB para más información.
<?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);
}
?>
Si la consulta no logra terminar después de un segundo de ejecución en el servidor, una MongoDB\Driver\Exception\ExecutionTimeoutException será lanzada.