Ejecuta una consulta de base de datos

# MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery — Ejecuta una consulta de base de datos

### Descripción

final public function MongoDB\Driver\Manager::executeQuery(string `$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.

### Parámetros

`namespace` (string)
  Un espacio de nombres completamente calificado (ej. `"databaseName.collectionName"`)
`query` (MongoDB\Driver\Query)
  La consulta a ejecutar.
`options`

  options
  Opción | Tipo | Descripción
  --- | --- | ---
  readPreference | MongoDB\Driver\ReadPreference | Una preferencia de lectura a utilizar para seleccionar un servidor para la operación.
  session | MongoDB\Driver\Session | Una sesión a asociar a la operación.

### Valores devueltos

Retorna un MongoDB\Driver\Cursor en caso de éxito.

### Errores/Excepciones

- Lanza una excepción MongoDB\Driver\InvalidArgumentException en caso de error durante el análisis de un argumento.
- Lanza una excepción MongoDB\Driver\ConnectionException si la conexión al servidor falla por una razón distinta a un problema de identificación
- Lanza una excepción MongoDB\Driver\AuthenticationException si se requiere una identificación pero falla
- Lanza una MongoDB\Driver\Exception\RuntimeException en caso de otro error (por ejemplo: operadores de consulta inválidos).

### Historial de cambios

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.

### Ejemplos

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 ejemplo anterior mostrará:

    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.

### Ver también

- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - Ejecuta una consulta de base de datos en este servidor

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open