【问题标题】:Mongo aggeregation limit while grouping分组时的MongoDB聚合限制
【发布时间】:2013-12-05 11:53:56
【问题描述】:

我有一个集合,它按“类型”字段进行聚合和分组。最终结果应该是每种类型最多只有五个文档。但是如果我在分组之前限制只有五个第一个文档将被分组。如果我在组之后限制前五种类型将返回。

有没有办法做到这一点,而无需为每种类型执行 find(),限制为 5 并合并所有结果?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    如果您可以使用 C#(根据我对 mongodb 的快速谷歌搜索),您可以使用具有“ResultSelector-Function”的 GroupBy 之一来执行此操作,如下所示:

    var groups = Enumerable.Range(0, 1000).
                    GroupBy(
                            x => x/10, 
                            (key, elements) => new  { Key = key, Elements = elements.Take(5) }
                           );
    

    关于此代码的速度 - 我相信该组在结果选择器被实例化之前已完全构建 - 因此在输入序列上自定义 foreach 并手动构建组可能会更快(如果您能以某种方式确定何时完成)

    P.S.:再想一想 - 我怀疑我的答案是你想要的。我查看了 mongo-DB 文档,“map”结合合适的“reduce”函数可能正是您想要的。

    【讨论】:

    • 对不起,这不是我要找的答案。
    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2020-06-11
    • 2017-11-08
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多