我正在使用Nodejs和Mongodb构建一个应用程序来扫描Stackoverflow以获取新内容,并找到热门和热门话题,我需要知道这样做的方法,因为我不确定我是否正确地执行了此操作当我来自MySQL时,我的直觉告诉我这里有不同的东西。
我实际上并不是在扫描Stackoverflow,它只是作为一个类比很容易使用,但我仍然有帖子,我有评论,以及发布帖子的用户(无视发布评论的用户)。
我最初的解决方案是创建三个表(集合):
基本上我希望能够通过“给我今天的顶级用户”和“给我这篇文章的历史”来查询数据库,以创建一个图表这篇文章的表现(排名,评分,评论)等等。随着时间的推移。
使用Mongodb做这样的事情的正确方法是什么?我应该将帖子统计信息存储为帖子文档的一部分吗?
答案 0 :(得分: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擅长水平扩展,因此您将在此处充分利用它。