【问题标题】:mongodb mapreduce groupby twicemongodb mapreduce groupby 两次
【发布时间】:2014-10-12 21:24:48
【问题描述】:

我是 mongodb 的新手,并尝试从现有集合中计算每天有多少不同的登录用户。集合中的数据如下所示

[{
    _id: xxxxxx,
    properties: {
        uuid: '4b5b5c2e208811e3b5a722000a97015e',
        time: ISODate("2014-12-13T00:00:00Z"),
        type: 'login'
    }
}]

由于我的知识有限,我目前的想法是先按天分组,将数据输出到一个 tmp 集合,然后使用这个 tmp 集合进行 anther map reduce 并将结果输出到最终集合。这个解决方案会让我的收藏变得更大,而我并不喜欢它。有没有人可以帮助我或我可以遵循的任何好的/更复杂的教程?谢谢

【问题讨论】:

    标签: mongodb mapreduce mongodb-query aggregation-framework


    【解决方案1】:

    我建议使用 Aggregation,而不是 map reduce。您可以将聚合视为有点像 linux 管道,因为您可以将一个操作的结果传递给下一个操作。使用此策略,您可以执行 2 个连续的组,而无需向数据库写入任何内容。

    查看this question 了解更多详情。

    【讨论】:

    • 是的,聚合管道将解决问题。但是,我的情况有点棘手,我在帖子中没有提到。我还需要在我的 mapreduce 函数中处理时区,因此我认为我必须使用 mapreduce 而不是聚合管道
    • 是的,这让它变得有点困难。根据您存储时区的方式,您可能可以使用 $project 运算符做一些花哨的事情来转换时区。更多详情请参阅stackoverflow.com/questions/18287493/… 中的第二个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2011-08-31
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多