L'objet de résultat d'une requête de base de données.
Un MongoCursor a 2 états différents : Avant et après la requête. Un curseur peut être créé manuellement en appelant le constructeur, mais il est générallement créé en appelant la fonction MongoCollection::find(). Lorsqu'un curseur est créé, il n'a pas encore contacté la base de données, il est dans l'état "avant requête". Dans cet état, le client peut spécifier les paramètres de sa requête, comme les limitations, les exceptions, l'ordre de tri ainsi que d'autres options avancées.
Lorsque le client tente de récupérer un résultat (en appelant la fonction MongoCursor::next(), directement ou indirectement), le curseur passe à l'état "après requête". À ce moment là, les seules fonctions disponibles sont les fonctions Iterator, MongoCursor::hasNext(), et MongoCursor::getNext().
<?php
$cursor = $collection->find()->limit(10);
// la base n'a pas encore été interrogée,
// il est donc encore temps d'ajouter des options
$cursor = $cursor->sort(array("a" => 1));
var_dump($cursor->getNext());
// maintenant, la base a été interrogée, et les options ne sont plus prises en compte
// Cet commnande va produire une exception :
$cursor->skip(4);
?>
Est ce que la requête doit avoir le drapeau "slaveOkay" activé, ce qui permet des lectures sur l'esclave (les esclaves sont par défaut déstinés à des sauvegardes et donc inaccessibles en lectures). Peut être surchargé avec MongoCursor::slaveOkay().
Affecte le timeout en millisecondes pour les réponses des bases de données. Pour un timeout infini, utilisez -1. Peut être surchargé avec MongoCursor::timeout(). Ceci ne provoque pas une annulation de l'opération par le serveur MongoDB mais fait en sorte que le pilote s'arrête d'attendre une réponse et envoie une MongoCursorTimeoutException.
Documentation de MongoDB » concernant les curseurs.