Mongodb globale $count

0

La question

Je voudrais compter le nombre de documents retournés par une agrégation.

Je suis sûr que mon premier regroupement des œuvres, parce que je utiliser plus tard dans mon programme. Pour ce faire j'ai créé un pipeline de la variable (ici appelé pipelineTest, demandez moi si vous voulez le voir en détail, mais c'est assez long, c'est pourquoi je ne donne pas les lignes ici).

Pour compter le nombre de documents retournés, je pousse mon pipeline avec : {$count: "totalCount"}

Maintenant, je voudrais obtenir (ou journal) totalCount de la valeur. Que dois-je faire ?

Voici l'agrégation :

pipelineTest.push({$count: "totalCount"});
        cursorTest = collection.aggregate(pipelineTest, options)
        console.log(cursorTest.?)

Merci pour votre aide, j'ai lu beaucoup et beaucoup de doc sur l'agrégation et je ne comprends toujours pas comment lire le résultat d'une agrégation...

aggregate mongodb
2021-11-23 20:45:58
2

La meilleure réponse

0
  1. En supposant que vous êtes en utilisant async/await syntaxe - vous besoin d'attendre le résultat de l'agrégation.
  2. Vous pouvez convertir le curseur d'un tableau, d'obtenir le premier élément de ce tableau et de l'accès totalCount.
     pipelineTest.push({$count: "totalCount"});   
     cursorTest = await collection.aggregate(pipelineTest, options).toArray();  
     console.log(cursorTest[0].totalCount);
2021-11-23 21:05:41

Merci pour votre réponse. Hmm, si j'utilise l'attendent, il retourne cette erreur : `` cursorTest = attendent la collection.agrégation(pipelineTest, options).toArray(); ^^^^^ SyntaxError: attendre est valable uniquement en fonction async ``
Aux98

Si je n'utilise pas attendre, j'ai eu cette erreur : `` (noeud:21748) UnhandledPromiseRejectionWarning: TypeError: Cannot read property "totalCount" de l'indéfini (nœud:21748) UnhandledPromiseRejectionWarning: non Gérée promesse de rejet. Cette erreur provient soit en les jetant à l'intérieur d'une fonction async sans un bloc catch, ou en rejetant une promesse qui n'a pas été gérée avec .catch(). Pour terminer le nœud de processus non gérée promesse de rejet ``
Aux98

@Aux98 pouvez-vous essayer cela? collection.agrégation(pipelineTest, options).toArray().ensuite(res => console.log(res[0])).catch(err => console.d'erreur(err))
Sergey Shevchuk

Oui c'est comme ça, merci pour votre aide! Cependant, .toArray est vraiment lent (prend 5 minutes pour retourner un résultat). Comme j'ai besoin pour utiliser cette fonction 6 fois, il pourrait être un problème. Mais je vais essayer d'optimiser mon code afin de réduire le temps. Merci encore
Aux98
0

L'agrégation

db.mycollection.aggregate([
    {
        $count: "totalCount"
    }
])

Résultat

[ { totalCount: 3 } ]

Vos Données Personnelles

Essayez les solutions suivantes:

pipelineTest.push({$count: "totalCount"});
cursorTest = collection.aggregate(pipelineTest, options)
console.log(cursorTest.totalCount)
2021-11-23 20:58:33

Merci pour la réponse, la console de retour : undefined
Aux98

Mais en effet, c'est ce que j'ai essayé en premier...
Aux98

Ahh, vous devez être en utilisant une langue spécifique - probablement JavaScript...
barrypicker

Ho oui j'ai oublié de dire que, en effet, c'est le javascript.
Aux98

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................