Mongodb łączna ilość $

0

Pytanie

Chciałbym policzyć liczbę dokumentów zwróconych agregacji.

Jestem pewien, że moja wstępna agregacja działa, bo używam jej później w swoim programie. Do tego stworzyłem zmienną przenośnika (tutaj nazywa się pipelineTest, zapytaj mnie, czy chcesz ją zobaczyć szczegółowo, ale ona jest dość długa, więc nie daję tu wierszy).

Aby obliczyć ilość zwróconych dokumentów, klikam na swój przenośnik z : {$count: "totalCount"}

Teraz chciałbym uzyskać (lub wejść) totalCount wartość. Co mam robić ?

Oto agregacja :

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

Dziękuję za pomoc, mam wiele, wiele czytał dokument o agregacji i do tej pory nie rozumiem, jak odczytać wynik agregacji...

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

Najlepsza odpowiedź

0
  1. Zakładając, że używasz składnia async/await - trzeba poczekać na wynik agregacji.
  2. Można przekształcić wskaźnik do tablicy, pobierz pierwszy element tej tablicy i uzyskać dostęp do totalCount.
     pipelineTest.push({$count: "totalCount"});   
     cursorTest = await collection.aggregate(pipelineTest, options).toArray();  
     console.log(cursorTest[0].totalCount);
2021-11-23 21:05:41

Dziękuję za odpowiedź. Hmm, jeśli używam await, zwraca ten błąd : ` cursorTest = kolekcja await.aggregate(taśmowy test, opcje).toArray(); ^^^^^ błąd Składni: czekam dopuszczalne tylko w asynchronicznej funkcji `
Aux98

Jeśli nie używam czekam, mam ten błąd : ` (węzeł:21748) Ostrzeżenie o bez obietnicy: Błąd typu: Nie można odczytać właściwość "Całkowity koszt" nieokreślony (węzeł:21748) Ostrzeżenie o bez obietnicy: Odchylenie camera obietnice. Ten błąd występuje albo w wyniku włączenia asynchronicznej funkcji bez bloku catch, albo w wyniku odchylenia obietnice, które nie zostało przetworzone z pomocą .catch(). Aby zakończyć proces hosta w przypadku nieprzetworzonego odrzuceniu obietnice `
Aux98

@Aux98 możesz spróbować? kolekcja.napędzany(taśmowy test, opcje).toArray().następnie(res => console.log(res[0])). złapać(błąd =>> konsola.błąd(błąd))>>
Sergey Shevchuk

Tak to działa dokładnie tak, dziękuję za pomoc! Chociaż, .toArray bardzo powolny (wymaga 5 minut, aby odzyskać wynik). Ponieważ muszę korzystać z tej funkcji 6 razy, to może być problem. Ale postaram się optymalizować swój kod, aby skrócić czas. Jeszcze raz dziękuję
Aux98
0

Agregacja

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

Wynik

[ { totalCount: 3 } ]

Twoje Dane

Spróbuj wykonać następujące czynności:

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

Dziękuję za odpowiedź, konsola wróci : undefined
Aux98

Ale faktycznie to jest to, co próbowałem w pierwszej kolejności...
Aux98

Ach, to musi być używana w określonym języku - możliwe, JavaScript...
barrypicker

Ho tak, zapomniałem powiedzieć, że to naprawdę javascript.
Aux98

W innych językach

Ta strona jest w innych językach

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