0

模型检查:

checkin
  _id
  interest_id
  author_id

我有一组签到(通过简单的“查找”查询解决)我想计算每个兴趣的签到次数。是什么让这项任务变得更加困难 - 我们应该将一个人的两次签到和一个兴趣算作一次签到。

AFAIK,mongo 中的组操作由 m​​ap/reduce 查询执行。我们应该在这里使用它吗?我对这种方法的唯一想法是聚合每个兴趣的用户数组,然后返回这个数组的长度。

编辑我最终没有使用 map/reduce,尽管 Emily 的回答工作得很好而且很快。我必须只选择最近 60 分钟的签到,结果不应该太多。所以我只是把它们都交给 Ruby 驱动程序,然后在 ruby​​ 端进行所有计算。它有点慢,但更具可扩展性和易于理解。

最好的,罗马的

4

1 回答 1

1

Map reduce 可能是解决此问题的方法,您可以通过两个 map reduce 获得所需的结果。

首先,您可以删除重复的 author_id 和 interest_id 对。

  • 关键是 author_id 和 interest_id
  • 值将是 checkin_id

第二个 map reduce 只是对给定 author_id 的签入次数的计数。

  • 关键是 author_id
  • 值将是 checkin_id 计数
于 2012-07-11T15:42:48.477 回答