(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery â ExĂ©cute une requĂȘte de base de donnĂ©es
$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.
namespace (string)"databaseName.collectionName")
query (MongoDB\Driver\Query)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. |
Retourne un MongoDB\Driver\Cursor en cas de succĂšs.
| 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.
|
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.