Rechercher une fonction PHP

MongoCollection: : aggregateCursor

(PECL mongo >=1.5.0)

MongoCollection::aggregateCursorExécute une commande d'agrégation, et récupère les résultats via un curseur

Description

public MongoCollection::aggregateCursor ( array $command [, array $options ] ) : MongoCommandCursor

Avec cette méthode, vous pouvez exécuter des commandes d'agrégation et récupérer les résultats via un curseur, au lieu de ne récupérer qu'un seul document, comme c'est le cas avec la méthode MongoCollection::aggregate(). Cette méthode retourne un objet MongoCommandCursor. Cet objet de type curseur implémente l'interface Iterator tout comme les objets MongoCursor qui sont retournés par la méthode MongoCollection::find().

Note: Le MongoCommandCursor résultant va hériter des préférences de lecture de cette collection. MongoCommandCursor::setReadPreference() peut être utilisé pour modifier les préférences de lecture, avant d'avancer sur le curseur.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

pipeline

La commande d'agrégation à exécuter.

options

Options pour la commande d'agrégation. Les options valides sont :

  • "allowDiskUse"

    Autorise les étapes d'agrégation d'écrire dans des fichiers temporaires

  • "cursor"

    Il est possible de configurer le nombre de documents initiaux que le serveur doit retourner avec le premier jeux de résultats. La taille du lot initial par défaut est 101. Vous pouvez la modifier en ajoutant l'option batchSize :

    <?php
    $collection
    ->aggregateCursor
        
    $pipeline,
        [ 
    "cursor" => [ "batchSize" => ] ]
    );

    Cette option configure uniquement la taille du premier lot. Pour configurer la taille des lots suivants, utilisez la méthode MongoCommandCursor::batchSize() sur l'objet MongoCommandCursor retourné.

  • "explain"

    Retourne des informations sur l'exécution de la commande. Cette option peut faire que la commande va retourner un document résultat qui ne sera pas utilisable pour la construction d'un MongoCommandCursor. Si vous devez utiliser cette option, vous pourriez considérer l'utilisation de la méthode MongoCollection::aggregate().

  • "maxTimeMS"

    Spécifie une limite cumulative de temps, en millisecondes, pour procéder à l'opération (n'inclut pas le temps d'inactivité). Si l'opération n'est pas terminée durant cette période, une exception MongoExecutionTimeoutException sera émise.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Retourne un objet MongoCommandCursor. En raison du fait que l'objet implémente l'interface Iterator, vous pouvez parcourir le jeux de résultats tel que retourné par la requête de commande. MongoCommandCursor implémente également l'interface MongoCursorInterface qui ajoute les méthodes MongoCommandCursor::batchSize(), MongoCommandCursor::dead() et MongoCommandCursor::info().

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec MongoCollection::aggregateCursor()

Trouve toutes les valeurs distinctes pour une clé.

<?php
$m 
= new MongoClient;
$db $m->test;
$people $db->people;
$people->drop();

$people->insert(array("name" => "Joe""points" => 4));
$people->insert(array("name" => "Molly""points" => 43));
$people->insert(array("name" => "Sally""points" => 22));
$people->insert(array("name" => "Joe""points" => 22));
$people->insert(array("name" => "Molly""points" => 87));

$ages $people->aggregateCursor( [
        [ 
'$group' => [ '_id' => '$name''points' => [ '$sum' => '$points' ] ] ],
        [ 
'$sort' => [ 'points' => -] ],
] );

foreach (
$ages as $person) {
    echo 
"{$person['_id']}{$person['points']}\n";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :


Molly: 130
Joe: 26
Sally: 22

Exemple #2 Exemple avec MongoCollection::aggregateCursor() avec différentes tailles de lots initiaux

Trouve toutes les valeurs distinctes pour une clé.

<?php
$m 
= new MongoClient;
$db $m->test;
$people $db->people;
$people->drop();

/* Insertion de données */
$people->insert(array("name" => "Joe""points" => 4));
$people->insert(array("name" => "Molly""points" => 43));
$people->insert(array("name" => "Sally""points" => 22));
$people->insert(array("name" => "Joe""points" => 22));
$people->insert(array("name" => "Molly""points" => 87));

/* Exécuter la commande */
$ages $people->aggregateCursor(
    [
        [ 
'$group' => [ '_id' => '$name''points' => [ '$sum' => '$points' ] ] ],
        [ 
'$sort' => [ 'points' => -] ],
    ],
    [ 
"cursor" => [ "batchSize" => ] ]
);

foreach (
$ages as $person) {
    echo 
"{$person['_id']}{$person['points']}\n";
}

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :


Molly: 130
Joe: 26
Sally: 22

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongocollection.aggregatecursor.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut