Kspread súhrnná $count

0

Otázka

Ja by som chcel spočítať počet dokumentov vrátiť o súhrnom.

Som si istý, že moje prvé agregácie funguje, lebo som ho použiť neskôr v môj program. Urobiť tak som vytvoril potrubia premennej (tu nazývané pipelineTest, sa ma pýtajú, či chceš vidieť, ako to podrobne, ale je to dosť dlhá, preto sa nemám dať linky tu).

Ak chcete spočítať počet dokumentov, vrátil som sa presadiť svoje plynovodu s : {$count: "totalCount"}

Teraz by som rád dostať (alebo prihlásiť) totalCount hodnota. Čo by som mal robiť ?

Tu je agregácia :

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

Vďaka za vašu pomoc, čítal som veľa a veľa doc o agregácie a ja stále neviem pochopiť, ako čítať výsledkom agregácie...

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

Najlepšiu odpoveď

0
  1. Za predpokladu, že používate async/čakajú syntax - musíte počkať na výsledok agregácie.
  2. Môžete previesť kurzor do poľa, získať prvý prvok, že pole a prístup totalCount.
     pipelineTest.push({$count: "totalCount"});   
     cursorTest = await collection.aggregate(pipelineTest, options).toArray();  
     console.log(cursorTest[0].totalCount);
2021-11-23 21:05:41

Ďakujem za odpoveď. Hmm, ak môžem použiť čakajú, vráti sa toto chybové hlásenie : `` cursorTest = čakajú zbierky.agregát(pipelineTest, voľby).toArray(); ^^^^^ SyntaxError: čakajú je platná len v async funkcia ``
Aux98

Ak nechcem použiť čakajú, som dostal túto chybu : `` (uzol:21748) UnhandledPromiseRejectionWarning: TypeError: nemôžem prečítať majetok "totalCount' z nedefinovaný (uzol:21748) UnhandledPromiseRejectionWarning: Nespracovaná sľub odmietnutie. Táto chyba vznikla buď tým, že hodí vnútri e async funkciu bez toho, catch blok, alebo odmietnutie sľubu, ktorý bol nie zaobchádzať s .chytiť(). Ak chcete ukončiť uzol procesu na nepopísaná sľub odmietnutie ``
Aux98

@Aux98 môžete skúsiť toto? zbierka.agregát(pipelineTest, voľby).toArray().potom(res => konzoly.prihlásenie(res[0])).chytiť(err => konzoly.chyba(err))
Sergey Shevchuk

Áno, je to práca, ako, že, vďaka za vašu pomoc! Aj keď, .toArray je veľmi pomalý (trvá 5 minút vrátiť výsledok). Ako som musieť použiť túto funkciu, 6-krát to môže byť problém. Ale budem sa snažiť optimalizovať môj kód s cieľom znížiť čas. Ešte raz vďaka
Aux98
0

Agregácia

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

Výsledok

[ { totalCount: 3 } ]

Vaše Údaje

Skúste nasledovné:

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

Vďaka za odpoveď, konzoly vrátiť : undefined
Aux98

Ale naozaj to je to, čo som sa snažil v prvom...
Aux98

Ach, musíte používať konkrétny jazyk - pravdepodobne JavaScript...
barrypicker

Ho áno, zabudol som povedať, že skutočne je to javascript.
Aux98

V iných jazykoch

Táto stránka je v iných jazykoch

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