【问题标题】:mongoDB group by/distinct querymongoDB group by/distinct 查询
【发布时间】:2012-07-11 13:58:33
【问题描述】:

模型签入:

checkin
  _id
  interest_id
  author_id

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

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

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

最好, 罗马

【问题讨论】:

    标签: mongodb mapreduce mongoid


    【解决方案1】:

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

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

    • key 是 author_id 和 interest_id
    • 值将是 checkin_id

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

    • key 是 author_id
    • 值将是 checkin_id 计数

    【讨论】:

    • 谢谢,但是,我猜,您的意思是按给定的 interest_id 而不是 author_id 计算签入次数?
    • 是的,很抱歉,我刚刚重读了您的问题,您将按interest_id 计数,而不是author_id。
    猜你喜欢
    • 2014-06-21
    • 2011-01-29
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多