2012-12-08 70 views
2

我正在用Nodejs和Mongodb構建一個應用程序來掃描新的內容的Stackoverflow,並找到熱門話題和熱門話題,而且我需要知道如何做到這一點,因爲我不確定我是否會「當我來自MySQL並且我的直覺告訴我這裏有不同的東西時,我正確地做了它。MongoDB的統計數據收集

我實際上並沒有掃描Stackoverflow,它只是一個簡單易用的比喻,但是我有帖子,我有評論和發佈該帖子的用戶(無視發佈評論atm的用戶)。

我最初的解決方案是創建三個表(集合):

  • 帖子 - 那裏我存儲有關的帖子
  • 後統計所有信息 - 在我店所有關於發佈動態信息(數評論,總體得分等')每一次X分鐘
  • 用戶 - 在哪裏存儲有關誰已張貼的帖子的用戶信息

基本上我想成爲能夠通過「給我當今最好的用戶」和「給我這篇文章的歷史」來查詢數據庫,以創建一種圖表,說明這篇文章隨着時間的推移如何表現(排名,評分,評論等)。

用Mongodb做這種事的正確方法是什麼?我應該將帖子統計信息作爲帖子文檔的一部分存儲嗎?

回答

0

我個人會在這裏尋求混合解決方案。

您無論如何都希望post上的某種彙總數據始終保持不變。所以post內我將房子包含了所有的時間統計一個額外的子文檔:

stats: { 
    views: 456, // Just an example 
    vote_ups: 5, 
    vote_downs: 4, 
    rank: 1, // vote ups minus vote downs 
    comments: 5, 
    answers: 6 
} 

隨後的時間各個時期,我會用post_stats你解釋創建文檔喜歡的方式:

{ 
    post_id: 45, 
    // etcera for minute by minute changes 
    time: ISODate() 
} 

使用post_id(或_id)查詢您想要製作的圖表。由於MongoDB擅長橫向擴展,因此您將在這裏充分利用它。