# 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 MongoDB\Driver\Manager::executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Selectionne 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'autre erreur (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. Notez 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