$reduce¶3.4版的新功能。
将表达式应用于数组中的每个元素,并将它们组合为单个值。
$reduce 具有以下语法:
| 领域 | 类型 | 描述 |
|---|---|---|
input |
数组 | 可以是任何 可解析为数组的有效表达式。有关表达式的更多信息,请参见表达式。 如果自变量解析为 如果参数不解析为数组或 |
initialValue |
表达 | value之前的初始累积集in将应用于input数组的第一个元素。 |
in |
表达 | 一个有效的表达式,该表达式以从左到右的顺序 在计算 |
如果input解析为空数组,则$reduce返回
initialValue。
| 例 | 结果 |
|---|---|
"abc" |
|
{ "sum" : 15, "product" : 48 } |
|
[ 1, 2, 3, 4, 5, 6 ] |
名为的集合events包含概率实验的事件。每个实验可以有多个events,例如连续滚动模具或
连续绘制几张卡片(无需更换)以达到所需的结果。为了获得实验的总体概率,我们需要将实验中每个事件的概率相乘。
步骤:
$group对进行分组,experimentId并用于$push创建具有每个事件概率的数组。$reducewith $multiply可以将of的元素相乘并将其组合probabilityArr为单个值并进行投影。该操作返回以下内容:
名为的集合clothes包含以下文档:
每个文档包含一个discounts数组,其中包含每个项目当前可用的折价优惠券。如果每个折扣都可以一次应用于该产品,则可以通过$reduce对discounts数组中的每个元素应用以下公式
来计算最低价格
:(1-折扣)*价格。
该操作返回以下内容: