MongoDB查询:按数组R的筛选条件对对应索引的数组D元素求和
MongoDB 按索引匹配数组元素求和实现方案
实现思路
由于R和D数组长度完全一致,我们可以先将两个数组按索引位置一一配对,再过滤出R值小于9的配对项,最后累加对应D值即可得到目标结果。
完整查询语句
假设你操作的集合名称为your_collection,聚合查询代码如下:
db.your_collection.aggregate([ // 若需要筛选特定文档,可在此处添加$match阶段:{ $match: { _id: 你的文档ID } } { $project: { sumD: { $sum: { $map: { input: { $filter: { input: { $zip: { inputs: ["$R", "$D"] } }, cond: { $lt: ["$$this.0", 9] } } }, in: "$$this.1" } } } } } ])
执行逻辑说明
$zip操作符会将R、D两个数组按索引配对,生成结构为[[1,40], [10,70], [4,90], [6,100], [20,50]]的临时数组$filter会过滤临时数组,仅保留R值(子数组第0位)小于9的项,过滤后得到[[1,40], [4,90], [6,100]]$map提取过滤结果中所有子数组的第1位(即对应的D值),最后通过$sum求和,输出结果为230,和预期一致。
内容的提问来源于stack exchange,提问作者R2D2
相关产品推荐
相关产品推荐

