mongoDB group by/distinct query



模型签入:

checkin
  _id
  interest_id
  author_id

我有一个签入的集合(通过简单的"查找"查询解决)我想计算一下每个兴趣的签到次数。让任务变得有点困难的是——我们应该把一个人的两次签到和一次兴趣算作一次签到。

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

EDIT我最终根本没有使用map/reduce,尽管Emily的回答很好&快的我只需要从最后60分钟中选择签入,结果不应该太多。所以我只需要把所有这些都拿到Ruby驱动程序中,然后在Ruby端进行所有的计算。它有点慢,但更易于扩展和理解。

最好,罗马

Map reduce可能是实现这一目标的方法,并且您可以通过两次Map reduces获得所需的结果。

在第一种方法中,可以删除重复的author_id和interest_id对。

  • 密钥为author_id和interest_id
  • 值将是checkin_id

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

  • 密钥应该是author_id
  • 值将是checkin_id计数

相关内容

  • 没有找到相关文章

最新更新