2

我正在使用 Nodejs 和 Mongodb 构建一个应用程序来扫描 Stackoverflow 以查找新内容,并找到热门和热门话题,我需要知道如何做到这一点,因为我不确定我来的时候是否正确形成 MySQL,我的直觉告诉我这里有些不同。

我实际上并没有扫描 Stackoverflow,它只是作为一个类比很容易使用,但是我有帖子,我有评论,以及发布线程的用户(不考虑在 atm 上发布评论的用户)。

我最初的解决方案是创建三个表(集合):

  • 帖子 - 我存储有关帖子的所有信息的地方
  • Post Stats - 我每 X 分钟存储一次关于帖子的所有动态信息(评论数、总分等)
  • 用户 - 我在其中存储有关发布帖子的用户的信息

本质上,我希望能够使用“给我今天的顶级用户”和“给我这篇文章的历史”来查询数据库,以创建一种图表,这个帖子的行为方式(排名、评分、评论等) ) 随着时间的推移。

用 Mongodb 做这样的事情的正确方法是什么?我应该将 Post Stats 存储为 Posts 文档的一部分吗?

4

1 回答 1

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 擅长水平扩展,您将在这里充分利用它。

于 2012-12-08T20:37:14.357 回答