(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Exécute une requête de base de données
$namespace
, MongoDB\Driver\Query $query
, array|MongoDB\Driver\ReadPreference|null $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.
namespace
(string)
Un espace de noms totalement qualifié (e.g. "databaseName.collectionName"
)
query
(MongoDB\Driver\Query)La requête à exécuter.
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 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. 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.