MongoDB聚合操作中 $sum 错误返回0的解决方法

mongodb聚合操作中 $sum 错误返回0的解决方法

本文针对MongoDB聚合操作中使用 $sum 运算符时,未能正确计算数组元素总和,而是返回0的问题,提供了详细的解决方案。通过 $map 和 $reduce 运算符,结合实际案例,展示了如何正确地对嵌套在文档中的数组进行求和,并生成所需格式的结果。

在使用MongoDB进行数据聚合时,经常会遇到需要计算数组元素总和的场景。$sum 运算符是实现这一目标的常用工具。然而,在处理嵌套数组时,直接使用 $sum 可能会遇到问题,导致返回错误的结果,例如0。本文将深入探讨这个问题,并提供两种有效的解决方案:使用 $map 和 $reduce 运算符。

问题分析

当文档结构较为复杂,例如包含嵌套数组时,直接在 $group 或 $project 阶段使用 $sum 可能会因为上下文不明确而导致计算错误。以下面的文档结构为例:

{  "_id": "2023-04-08",  "dailyNotes": [    {      "therapyDiscipline": "PT",      "individual": [        60,        45,        30,        75,        55      ],      "concurrent": [        69      ],      "coTreat": [        67      ]    },    {      "therapyDiscipline": "YT",      "individual": [        2,        4      ]    }  ]}

目标是计算 dailyNotes 数组中每个元素的 individual 数组的总和,并得到如下格式的结果:

{   "_id":"2023-04-08",   "dailyNotes":[      {         "individual":265      },      {         "individual":6      }   ]}

直接使用 $sum: ‘$dailyNotes.individual’ 往往会返回0,这是因为MongoDB无法正确解析这种嵌套结构的求和方式。

解决方案一:使用 $map 运算符

$map 运算符可以遍历数组的每个元素,并对每个元素执行指定的表达式。结合 $sum,可以有效地计算每个 individual 数组的总和。

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

db.collection.aggregate([  {    $project: {      _id: 1,      dailyNotes: {        $map: {          input: "$dailyNotes",          in: { individual: { $sum: "$$this.individual" } }        }      }    }  }])

代码解释:

$project 阶段用于重塑文档结构,保留 _id 字段,并创建新的 dailyNotes 字段。$map 运算符遍历 dailyNotes 数组。input: “$dailyNotes” 指定要遍历的数组。in: { individual: { $sum: “$$this.individual” } } 定义了对每个数组元素执行的表达式。$$this 指代当前遍历的数组元素(即 dailyNotes 中的每个对象)。$sum: “$$this.individual” 计算当前元素的 individual 数组的总和,并将结果赋值给新的 individual 字段。

解决方案二:使用 $reduce 运算符

$reduce 运算符也可以遍历数组,并将数组元素累积到一个单一的值。虽然 $map 更简洁,但在某些复杂场景下,$reduce 提供了更灵活的控制。

db.collection.aggregate([  {    $project: {      _id: 1,      dailyNotes: {        $reduce: {          input: "$dailyNotes",          initialValue: [],          in: { $concatArrays: [ "$$value", [ { individual: { $sum: "$$this.individual" } } ] ] }        }      }    }  }])

代码解释:

$project 阶段同样用于重塑文档结构。$reduce 运算符遍历 dailyNotes 数组。input: “$dailyNotes” 指定要遍历的数组。initialValue: [] 定义了累积器的初始值,这里是一个空数组。in: { $concatArrays: [ “$$value”, [ { individual: { $sum: “$$this.individual” } } ] ] } 定义了累积逻辑。$$value 指代累积器的当前值(即上一次迭代的结果)。$sum: “$$this.individual” 计算当前元素的 individual 数组的总和。{ individual: { $sum: “$$this.individual” } } 创建一个新的对象,包含计算出的总和。$concatArrays 将新的对象添加到累积器数组中。

总结

当需要在MongoDB聚合操作中计算嵌套数组的总和时,直接使用 $sum 可能会失败。通过使用 $map 或 $reduce 运算符,可以有效地解决这个问题。$map 提供了更简洁的语法,而 $reduce 则提供了更灵活的控制。根据实际场景选择合适的运算符,可以确保正确地计算数组元素总和,并生成所需格式的结果。在使用这些方法时,务必理解 $map 和 $reduce 运算符的内部机制,以及 $$this 和 $$value 的含义,以便更好地应用于更复杂的聚合场景。

以上就是MongoDB聚合操作中 $sum 错误返回0的解决方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/252062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 05:54:26
下一篇 2025年11月4日 05:59:38

相关推荐

  • 2025年值得关注的顶级收益型稳定币汇总

    随着加密市场寻求更稳定的收益来源,自带生息能力的稳定币正成为投资者关注的焦点。这些资产不仅锚定法定货币,还能通过其底层机制为持有者提供被动收入。本文将为您盘点2025年最值得关注的几种顶级收益型稳定币,解析其收益来源与潜在机遇。 2025年稳定币的交易所: 欧易:   币安:   火币: 2025年…

    2025年12月8日
    000
  • BTC 如何在币安兑换 USDT、DAI 等稳定币?交易流程全图

    BTC 如何在币安兑换 USDT、DAI 等稳定币?交易流程全图 在币安(binance)平台上将 btc 兑换成 usdt、dai 等稳定币,是用户实现资产保值、锁定利润或参与其他交易环节的重要操作。以下将分步骤详解整个兑换流程,适合新手用户快速上手。 Binance币安 官网直达: 安卓安装包下…

    2025年12月8日
    000
  • ETH 区块链浏览器怎么用?链上数据查询与应用场景

    ETH 区块链浏览器怎么用?链上数据查询与应用场景 区块链浏览器是连接用户与区块链网络的桥梁。对于以太坊(eth)用户来说,掌握如何使用区块链浏览器,不仅能提高对链上资产的透明度,也有助于防范风险、验证交易、追踪合约动态。以下将以最主流的浏览器之一 etherscan 为例,介绍其基础功能与实际应用…

    2025年12月8日
    000
  • web3.0还有哪些领域没有对应的币圈高市值币

    Web3.0在去中心化社交、去中心化身份与声誉系统、实体世界资产链接及去中心化科学等领域尚未出现高市值龙头币种。1. 去中心化社交(DeSoc)虽有Farcaster、Lens Protocol等探索,但用户规模和商业模式未成熟;2. 去中心化身份(DID)与声誉系统作为数字基础设施,缺乏整合用户数…

    2025年12月8日
    000
  • 稳定币USDT、USDC怎么用?小白稳定投资首选

    对于希望进入数字资产世界但又担心市场剧烈波动的新手来说,稳定币提供了一个理想的切入点。本文将详细介绍两种主流稳定币usdt和usdc的用途,并推荐最适合新手进行稳定投资的交易平台,帮助你安全地开启第一步。 2025年稳定币的主流交易所: 欧易:   币安:   火币: 新手如何使用USDT和USDC…

    2025年12月8日
    000
  • 2025年币圈常见骗局揭秘:新手如何防坑?

    随着加密货币市场的持续发展,诈骗手段也在不断演变和升级,让许多新手投资者防不胜防。本文旨在揭示2025年最常见的几种币圈骗局,通过详细解析其运作模式和识别方法,帮助您提高警惕,保护好自己的数字资产。 2025年主流的交易所: 欧易:   币安:   火币: 2025年币圈常见骗局类型 1. 假冒官方…

    好文分享 2025年12月8日
    000
  • 大白话解释区块链是什么意思 一文搞懂区块链

    区块链是一种去中心化的公开账本,1.通过每个参与者共同维护和验证交易实现去中心化;2.所有交易被打包成“区块”并按时间顺序链接成“链”;3.利用密码学技术确保数据一旦记录就无法篡改;4.具有公开透明、不可篡改、可追溯等特点,能有效防止作弊和提升系统稳定性。 你可能经常听到区块链这个词,感觉它和比特币…

    2025年12月8日
    000
  • 2025香港加密货币交易所排名 安全可靠的十大虚拟币APP盘点

    选择一个安全、可靠且功能全面的加密货币交易所变得至关重要。对于身处香港的投资者而言,寻觅适合自身交易需求和风险偏好的平台,是进行数字资产配置的第一步。优质的交易平台不仅提供丰富的币种选择和流畅的交易体验,更在用户资产安全、合规运营和客户服务方面构筑了坚实的屏障。以下将深入探讨当前市场上表现卓越的几大…

    2025年12月8日 好文分享
    000
  • 一文读懂稳定币 稳定币有哪几种

    稳定币是加密世界的重要基石,它通过与美元等法定货币挂钩,提供了价值稳定的数字资产,解决了比特币等加密货币价格剧烈波动的问题。了解不同类型的稳定币及其运作机制,对于任何加密货币投资者或用户都至关重要。 2025年稳定币的交易所: 欧易:   币安:   火币: 什么是稳定币? 简单来说,稳定币是一种价…

    2025年12月8日
    000
  • 稳定币是由哪个国家提出的 稳定币有什么用

    稳定币是加密货币世界中不可或缺的一环,它通过锚定美元等现实世界资产来维持价格稳定。本文将详细解释稳定币的起源,并阐明其在数字经济中的核心作用,帮助你全面理解这一重要的金融工具。 2025年稳定币主流的交易所: 欧易:   币安:   火币: 稳定币的起源:并非由单一国家提出 稳定币的概念并非由某个特…

    2025年12月8日
    000
  • ETH 是否存在安全隐患?历史漏洞与防护建议

    ETH 是否存在安全隐患?历史漏洞与防护建议 以太坊(ethereum,简称 eth)是目前全球最具影响力的智能合约平台之一,其去中心化、可扩展性和强大的开发生态吸引了众多开发者和资本入场。然而,这也意味着平台的攻击面更大,从智能合约到链上协议、从节点运行到用户行为,以太坊安全始终面临挑战。本文将系…

    2025年12月8日
    000
  • ETH 在 DeFi 场景中的应用有哪些?收益路径梳理

    ETH 在 DeFi 场景中的应用有哪些?收益路径梳理 以太坊(eth)是去中心化金融(defi)生态的基础资产之一,其高流动性、强共识与智能合约支持,使其在多个 defi 应用中扮演核心角色。对于希望通过 eth 获取链上收益的用户,理解其在 defi 场景中的主要用途与路径,有助于合理布局资产、…

    2025年12月8日
    000
  • BTC 是否具有避险属性?从宏观经济与通胀逻辑看价值储藏功能

    BTC 是否具有避险属性?从宏观经济与通胀逻辑看价值储藏功能 比特币(btc)作为最早的加密货币,自诞生以来逐渐被部分投资者视为“数字黄金”,认为其具备一定的避险属性。然而,这一观点在不同市场周期下表现不一,其本质仍需结合宏观经济环境、通胀背景与 btc 自身特性进行系统分析。 Binance币安 …

    好文分享 2025年12月8日
    000
  • BTC 是否适合做定投?周期性买入卖出策略推荐

    BTC 是否适合做定投?周期性买入卖出策略推荐 比特币(btc)作为加密货币市场的龙头资产,其稀缺性、抗审查性和长期上涨趋势,使其成为不少投资者进行长期定投(dca, dollar-cost averaging)的首选对象。但 btc 的高波动性也意味着需要合理的策略和风险管理,才能在牛熊周期中稳定…

    2025年12月8日
    000
  • SOL 价格走势预测:2025 年是否能够再次爆发?

    SOL 价格走势预测:2025 年是否能够再次爆发? solana(sol)是近年来最受关注的高性能 layer 1 区块链之一,凭借高速低费的技术优势,已在 defi、nft 和游戏等多个赛道建立了活跃生态。随着 2024 年底新一轮牛市迹象出现,市场高度关注 sol 是否能在 2025 年再次实…

    2025年12月8日
    000
  • 2025排名前十的币圈交易所有哪些?币圈十大交易所盘点

    随着数字资产市场的日益成熟,选择一个安全、可靠且功能强大的加密货币交易所是每位投资者成功的关键第一步。本文旨在为您梳理2025年全球范围内表现最出色、最值得信赖的十大币圈交易所,通过分析它们的核心优势、功能特点和用户群体,帮助您找到最适合自己投资需求的交易平台。 2025年币圈十大交易所排行榜 1.…

    2025年12月8日
    000
  • 新手刚入币圈避坑指南 给币圈新人炒币的建议2025

    踏入加密货币的世界既充满机遇也伴随着风险,对于新手而言,建立正确的投资观念和选择可靠的交易平台是成功的第一步。本指南将为你提供一系列核心建议,并推荐业内领先的交易平台,帮助你稳健起步,有效规避常见陷阱。 2025年主流的交易所: 欧易:   币安:   火币: 新手入门核心避坑法则 保持良好心态,拒…

    2025年12月8日
    000
  • 币圈风云人物有哪些?盘点2025年币圈十大风云人物

    随着加密货币市场进入新的发展阶段,行业领袖的言行对市场趋势、技术方向和监管格局产生着深远影响。了解这些关键人物的动向,不仅是洞察行业未来的窗口,也是投资者把握市场脉搏的重要参考。 2025年主流的交易所: 欧易:   币安:   火币: 2025年币圈十大影响力人物榜单 1. Vitalik But…

    2025年12月8日
    000
  • 对于web3.0以太坊跟sol哪个更重要

    以太坊和Solana在Web3.0中各有核心价值,1. 以太坊凭借高安全性和成熟生态,适合高价值DeFi应用和复杂智能合约;2. Solana以高速度、低费用优势,支撑高频交易和创新应用如游戏与模因币;3. 两者并非替代关系,而是基于不同需求形成互补,共同推动去中心化互联网发展。 在Web3.0去中…

    2025年12月8日
    000
  • 以太坊app免费下载安装 以太坊app最新版下载

    想要安全、便捷地管理和交易以太坊(eth),选择一款功能强大且可靠的手机app至关重要。本文为您精选了市场上主流的以太坊交易与管理应用,并进行了排名介绍,帮助您快速找到最适合自己的最新版app,并提供安全的下载安装指引。 顶级以太坊App下载与安装指南 所谓的“以太坊App”通常指的是支持以太坊及其…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信