缓存db.collection.count()mongo查询

时间:2014-02-17 04:13:04

标签: mongodb mongoose

我有一个人们投票和上传图片的网站 - 在主页上我想显示上传的数量。所以我从这开始:

db.uploads.count( { active: true }

但是我知道,一旦将很多文档添加到我的收藏中,这会变得很慢。所以我的想法是创建一个新的集合stats,它有(单个?)文档。每次上传图片时,我都可以在$inc字段上运行uploadCount ...有效缓存我的查询。然后,我可以在我的网站上查询此文档。

所以我的问题是,这是一种可接受的方法吗?这里有最好的做法还是更好的想法?

我在这里找到了$inc的想法:MongoDB 'count()' is very slow. How do we refine/work around with it?但是从2011年开始,所以我不确定这是否仍然是一个很好的解决方案。

1 个答案:

答案 0 :(得分:0)

该帖子中提到的内容有一定的有效性,因为一般的前提是你在检索中所做的事情将比可能发生的任何索引或集合扫描更快。并且要保持集合中文档的增量计数是您可以接受的。

如上所述,正如在该问题的答案中所提到的那样,,当时是一个开放的JIRA issue,它早已被解决和关闭。这足以说明,人们遇到的性能问题早已得到解决, count()的返回速度比以前的版本要快。

因此,从查询获取计数结果,您可能过滤器将更好地响应,并且通常对于这些类型的操作是必需的。但是,如果您 准备与“保留自己的计数器”并且相信,那么性能优势将足以满足您的具体需求,那么你建议的方法肯定对你有用。