亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于mongodb聚合查詢的問題·?

關于mongodb聚合查詢的問題·?

qq_遁去的一_1 2018-07-13 19:07:23
純前端一枚,之前沒有接觸后臺數據庫,現在學習mongodb數據庫,遇到這樣的一個情景,建立一個博客的數據庫,有這樣一個包含所有文章信息的集合,數據偽造如下:{ "id" : 1, "name" : "one", "tags" : [ "a", "c", "e" ] } { "id" : 2, "name" : "two", "tags" : [ "e" ] } { "id" : 3, "name" : "three", "tags" : [ "d", "e" ] } { "id" : 4, "name" : "four", "tags" : [ "g", "c", "e", "h" ] } { "id" : 5, "name" : "five", "tags" : [ "a", "c", "d" ] }tags 表示這篇文章所屬的標簽類型,現在想要查詢出有多少個不同的標簽類型,每個標簽下有多少條數據,這個該怎么實現?目前想到的是用 aggregate 中的 $unwind 將 tags 進行拆分,然后再用 $group 進行分組統計,但是具體代碼該怎么寫,或者是有其他更有效的方式,請指教!?。?
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

這是個很經典的統計問題,其實已經不是MongoDB特有的范疇了,對于其他數據庫來講也是通用的。
你想的辦法本身是沒有問題的,肯定可以通過aggregation的$unwind+$group得到你想要的結果。問題在于隨著時間推移,參與統計的博客數量將會越來越多,意味著你的統計語句將越來越慢。問題的關鍵在于如何限制住每次參與統計的記錄數。
從另一個角度講,博客一般寫完就很少有改動了,今天統計昨天的所有博客各屬于哪些標簽,跟明天再來統計昨天的得到的結果應該是一樣的(假設沒有修改的前提下)。所以每次都進行統計其實是浪費。
基于以上這些考慮,你其實可以每隔一段時間(比如每天)統計一次每個標簽都有多少次出現,把它們存起來,在需要時再把這些已經聚合過一次的數據再次聚合。這種方式稱為預聚合。
大概的方向是這樣,細節的問題你可以先自己思考一下。

查看完整回答
反對 回復 2018-07-15
  • 2 回答
  • 0 關注
  • 580 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號