MongoDB - Agrégation Cadre (Nombre Total)

Lors de l'exécution normale de "trouver" la requête sur MongoDB je peux obtenir le résultat total count (indépendamment de la limite) par l'exécution de "compter" sur le retour du curseur. Donc, même si je me limite à l'ensemble des résultats à 10 (par exemple) je peux encore savoir que le nombre total de résultats était de 53 ans (encore une fois, par exemple).

Si je comprends bien, l'agrégation cadre, cependant, ne doit pas retourner un curseur, mais simplement les résultats. Et donc, si j'ai utilisé le $limit opérateur de pipeline, comment puis-je connaître le nombre total de résultats, indépendamment de ladite limite?

Je suppose que je pourrais exécuter l'agrégation de deux fois (une fois pour compter les résultats via $group, et une fois avec $limit pour le nombre de résultats), mais cela semble inefficace.

Une approche alternative pourrait être de fixer le nombre total de résultats pour les documents (via $group) avant la $limit opération, mais cela semble aussi inefficace que ce nombre sera joint à chaque document (au lieu de simplement retourné une seule fois pour l'ensemble).

Suis-je manqué quelque chose? Des idées? Merci!

Par exemple, si c'est la requête:

db.article.aggregate(
    { $group : {
        _id : "$author",
        posts : { $sum : 1 }
    }},
    { $sort : { posts: -1 } },
    { $limit : 5 }
);

Comment puis-je savoir combien de résultats sont disponibles (avant $limit)? Le résultat n'est pas un curseur, donc je ne peux pas il suffit d'exécuter compter sur elle.

il serait utile si vous ajoutez vos requêtes à titre d'exemple à la question
Ajout d'un exemple de code. La question, cependant, est générique (je pense). Merci!

OriginalL'auteur Assaf Hershko | 2013-07-20