2 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是個(gè)很經(jīng)典的統(tǒng)計(jì)問題,其實(shí)已經(jīng)不是MongoDB特有的范疇了,對于其他數(shù)據(jù)庫來講也是通用的。
你想的辦法本身是沒有問題的,肯定可以通過aggregation的$unwind
+$group
得到你想要的結(jié)果。問題在于隨著時(shí)間推移,參與統(tǒng)計(jì)的博客數(shù)量將會(huì)越來越多,意味著你的統(tǒng)計(jì)語句將越來越慢。問題的關(guān)鍵在于如何限制住每次參與統(tǒng)計(jì)的記錄數(shù)。
從另一個(gè)角度講,博客一般寫完就很少有改動(dòng)了,今天統(tǒng)計(jì)昨天的所有博客各屬于哪些標(biāo)簽,跟明天再來統(tǒng)計(jì)昨天的得到的結(jié)果應(yīng)該是一樣的(假設(shè)沒有修改的前提下)。所以每次都進(jìn)行統(tǒng)計(jì)其實(shí)是浪費(fèi)。
基于以上這些考慮,你其實(shí)可以每隔一段時(shí)間(比如每天)統(tǒng)計(jì)一次每個(gè)標(biāo)簽都有多少次出現(xiàn),把它們存起來,在需要時(shí)再把這些已經(jīng)聚合過一次的數(shù)據(jù)再次聚合。這種方式稱為預(yù)聚合。
大概的方向是這樣,細(xì)節(jié)的問題你可以先自己思考一下。
- 2 回答
- 0 關(guān)注
- 1005 瀏覽
添加回答
舉報(bào)