2012-12-08 73 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擅长横向扩展,因此您将在这里充分利用它。