Mongodb toplam $ sayısı

0

Soru

Bir toplama tarafından döndürülen belge sayısını saymak istiyorum.

İlk toplamamın işe yaradığından eminim, çünkü daha sonra programımda kullanıyorum. Bunu yapmak için bir pipeline değişkeni oluşturdum (burada pipelineTest denir, ayrıntılı olarak görmek isteyip istemediğinizi sorun, ancak oldukça uzun, bu yüzden burada satırları vermiyorum).

Döndürülen belge sayısını saymak için boru hattımı şu şekilde zorluyorum: : {$count: "totalCount"}

Şimdi almak istiyorum (veya log) totalCount değer. Ne yapmalıyım?

İşte toplama :

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

Yardımlarınız için teşekkürler, toplama hakkında çok şey okudum ve bir toplamanın sonucunu nasıl okuyacağımı hala anlamıyorum...

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

En iyi cevabı

0
  1. Async / await sözdizimini kullandığınızı varsayarsak, toplamanın sonucunu beklemeniz gerekir.
  2. İmleci bir diziye dönüştürebilir, bu dizinin ilk öğesini alabilir ve totalcount'a erişebilirsiniz.
     pipelineTest.push({$count: "totalCount"});   
     cursorTest = await collection.aggregate(pipelineTest, options).toArray();  
     console.log(cursorTest[0].totalCount);
2021-11-23 21:05:41

Teşekkürler cevap için. Hmm, await kullanırsam, bu hatayı döndürür: "' cursorTest = await collection.toplama (pipelineTest, seçenekler).toArray (); ^ ^ ^ ^ ^ SyntaxError: await yalnızca zaman uyumsuz işlevinde geçerlidir" `
Aux98

Await kullanmazsam şu hatayı aldım: "'(düğüm: 21748) UnhandledPromiseRejectionWarning: TypeError:undefined (düğüm: 21748) UnhandledPromiseRejectionWarning: Unhandled promise reddinin' totalCount ' özelliğini okuyamıyor. Bu hata, bir catch bloğu olmayan bir zaman uyumsuz işlevin içine atılarak veya işlenmeyen bir sözü reddederek ortaya çıkmıştır .yakalamak(). İşlenmeyen söz reddinde düğüm işlemini sonlandırmak için" `
Aux98

@Aux98 bunu deneyebilir misin? koleksiyon.toplama (pipelineTest, seçenekler).toArray().sonra (res => konsol.günlük(res[0])).catch (err => konsol.hata (err))
Sergey Shevchuk

Evet, bu şekilde çalışıyor, yardımlarınız için teşekkürler! Rağmen, .toArray gerçekten yavaştır (sonucu döndürmek 5 dakika sürer). Bu işlevi 6 kez kullanmam gerektiğinden sorun olabilir. Ancak zamanı azaltmak için kodumu optimize etmeye çalışacağım. Tekrar teşekkürler
Aux98
0

Toplanma

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

Sonuç

[ { totalCount: 3 } ]

Ayrıntılarınız

Aşağıdakileri deneyin:

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

Cevap için teşekkürler, konsol geri döndü : undefined
Aux98

Ama aslında ilk denediğim buydu...
Aux98

Belirli bir dil kullanıyor olmalısınız - muhtemelen JavaScript...
barrypicker

Evet, bunu söylemeyi unuttum, gerçekten javascript.
Aux98

Diğer dillerde

Bu sayfa diğer dillerde

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