分组时的Mongo聚合限制

时间:2013-11-21 06:10:01

标签: mongodb

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

有没有办法在不为每种类型执行find()的情况下执行此操作,限制为5并合并所有结果?

1 个答案:

答案 0 :(得分:-3)

如果您可以使用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”函数可能就是你想要的。