Exécute une requête de base de données

# MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery — Exécute une requête de base de données

### Description

final public function MongoDB\Driver\Manager::executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Sélectionne un serveur en fonction de l'option `"readPreference"` et exécute la requête sur ce serveur.

Les valeurs par défaut de l'option `"readPreference"` et de l'option `"readConcern"` de la requête seront déduites à partir d'une transaction active (indiquée par l'option `"session"`), suivie de l'URI de connexion.

### Liste de paramètres

`namespace` (string)
  Un espace de noms totalement qualifié (e.g. `"databaseName.collectionName"`)
`query` (MongoDB\Driver\Query)
  La requête à exécuter.
`options`

  options
  Option | Type | Description
  --- | --- | ---
  readPreference | MongoDB\Driver\ReadPreference | Une préférence de lecture à utiliser pour sélectionner un serveur pour l'opération.
  session | MongoDB\Driver\Session | Une session à associer à l'opération.

### Valeurs de retour

Retourne un MongoDB\Driver\Cursor en cas de succès.

### Erreurs / Exceptions

- Lance une exception MongoDB\Driver\AuthenticationException si une identification est nécessaire mais qu'elle échoue
- Lance une exception MongoDB\Driver\ConnectionException si la connexion au serveur échoue pour une autre raison qu'en raison d'un problème d'identification
- Lance une MongoDB\Driver\Exception\RuntimeException sur d'autres erreurs (par exemple: opérateurs de requête invalides).

### Historique

Version | Description
--- | ---
PECL mongodb 2.0.0 | Le paramètre `options` n'accepte plus une instance de MongoDB\Driver\ReadPreference.
PECL mongodb 1.21.0 | Passer un objet MongoDB\Driver\ReadPreference en tant qu'`options` est obsolète et sera supprimé dans la 2.0.
PECL mongodb 1.4.0 | Le troisième paramètre est maintenant un tableau `options`. Pour des raisons de compatibilité ascendante, ce paramètre acceptera toujours un objet MongoDB\Driver\ReadPreference.

### Exemples

Exemple #1 Exemple 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);
    }

    ?>

L'exemple ci-dessus va afficher :

    object(stdClass)#6 (1) {
      ["x"]=>
      int(3)
    }
    object(stdClass)#7 (1) {
      ["x"]=>
      int(2)
    }

Exemple #2 Limiter le temps d'exécution d'une requête

L'option `"maxTimeMS"` de la classe MongoDB\Driver\Query peut être utilisée pour limiter le temps d'exécution d'une requête. Il est à noter que cette limite de temps est appliquée côté serveur et ne prend pas en compte la latence réseau. Voir » Terminer les opérations en cours dans le manuel MongoDB pour plus d'informations.

    <?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 requête ne parvient pas à se terminer après une seconde d'exécution sur le serveur, une MongoDB\Driver\Exception\ExecutionTimeoutException sera lancée.

### Voir aussi

- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - Exécute une requête de base de données sur ce serveur

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