MongoDB执行$reduce直到满足条件

MongoDB执行$reduce直到满足条件,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,这些是我在原始文档上运行$group并使用“$sum”:1获取存储在属性“value”中的相应计数的中间结果,如图所示: { id: 1, value: 10 }, { id: 2, value: 9 }, { id: 3, value: 8 }, { id: 4, value: 7 }, { id: 5, value: 6 } 在第一阶段,我计算“值”的总数,在第二阶段,我计算“值”占总数的百分比: { "$group": {

这些是我在原始文档上运行$group并使用“$sum”:1获取存储在属性“value”中的相应计数的中间结果,如图所示:

{
id: 1,
value: 10
},
{
id: 2,
value: 9
},
{
id: 3,
value: 8
},
{
id: 4,
value: 7
},
{
id: 5,
value: 6
}
在第一阶段,我计算“值”的总数,在第二阶段,我计算“值”占总数的百分比:

{
                "$group": {
                    "_id": 0,
                    "ids": { "$push": "$id" },
                    "values": { "$push": "$value" },
                    "totalSum": { "$sum": "$value" }
                }
            },
            {
                "$project": {
                    "ids": "$ids",
                    "values": "$values",
                    "totalSum": "$totalSum",
                    "percentages":
                        {
                            "$map": {
                                "input": "$values",
                                "as": "s",
                                "in": {
                                    "$multiply":
                                        [{ "$divide": ["$$s", "$totalSum"] }, 100]
                                }
                            }
                        }
                }
            }
以下是我得到的结果:

[ { _id: 0,
ids: [1,2,3,4,5],
values: [10,9,8,7,6],
totalSum: 40,
percentages: [25,22.5,20,17.5,15]}]
我想在管道中添加另一个阶段,在该阶段中,我可以返回其累积/运行百分比值达到阈值的结果。如果阈值为50%,我希望得到如下结果:

[{
ids: [1,2],
values: [10,9]
}]

可以用reduce吗?或者任何其他管道?

它的用法与其他地方的任何其他高阶函数几乎相同。这意味着输出累加器基本上有
$$value
,每个数组项都有
$$this
。所以你不能像以前那样“打破循环”。也许你可以通过举例说明你真正想做什么。嘿,刚刚编辑了这个问题。希望它更有意义。根据你的回答,虽然我认为不可能,但我认为你需要更清楚地解释自己。向我们展示一些样本数据和您期望得到的结果。甚至不清楚您为什么需要(或认为需要)
$reduce
。人们通常认为他们需要
$reduce
而其他东西实际上已经起到了作用。在您尝试在评论中向我们展示之前,请使用您问题的链接。在评论中发布代码会导致糟糕的阅读。你的问题是你要问的内容的主体需要在哪里。我不打算发布任何代码,但我已经用一个例子编辑了这个问题。希望这能提供足够的清晰度。谢谢