MongoDB 基于每个元素对多个文档中的数组求和

2023-12-08

我有以下文档结构(针对此示例进行了简化)

{
  _id : ObjectId("sdfsdf"),
  result : [1, 3, 5, 7, 9]
},
{
  _id : ObjectId("asdref"),
  result : [2, 4, 6, 8, 10]
}

我想得到这些的总和result数组,但不是总和,而是一个与元素基础上原始数组之和相对应的新数组,即

result : [3, 7, 11, 15, 19]

我在这里搜索了无数的问题,其中一些问题很接近(例如this one, this one, and this one),但我还不能完全到达那里。

我可以得到每个数组的总和

aggregate(
    [
      {
        "$unwind" : "$result"
      },
      {
        "$group": {
          "_id": "$_id",
          "results" : { "$sum" : "$result"}
          }
      }
    ]
)

这给了我

[ { _id: sdfsdf, results: 25 },
  { _id: asdref, results: 30 } ]

但我不知道如何获得每个元素的总和


您可以使用包含数组索引如果您有 3.2 或更高版本的 MongoDb。

那么你应该改变$unwind.

你的代码应该是这样的:

.aggregate(
    [
      {
        "$unwind" :  { path: "$result", includeArrayIndex: "arrayIndex" }
      },
      {
        "$group": {
          "_id": "$arrayIndex",
          "results" : { "$sum" : "$result"}
          }
      },
      { 
        $sort: { "_id": 1}
      },
      {
        "$group":{
          "_id": null,
          "results":{"$push":"$results"}
          } 
      },
      {
        "$project": {"_id":0,"results":1}
      }
    ]
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB 基于每个元素对多个文档中的数组求和 的相关文章

随机推荐

  • Win32 和 Win64 机器中的 SendInput 按键

    我在 xp 32 位下使用 sendInput 使用 web 服务来推送当前焦点窗口的 F 5 现在在 Vista win64 下我无法获得这个结果 有些文章指出使用 4 位或 8 位的 uint 问题 但这并不能通过差异编译和 Field
  • 求二叉树的直径

    我试图在java中找到二叉树的直径 包含最大节点数的树中任意两个节点之间的路径长度 我的代码片段 public int diametre Node node int d if node null return 0 lh diametre n
  • 使用正确的 pack:// URI 格式

    我有一个 WPF 类库 其中包含一个包含图像的文件夹 图像 在 WPF 应用程序中 我不会使用以下方式引用该文件夹中的图像
  • 在哪里可以找到要添加为参考的 Microsoft.VisualStudio.ExtensionManager?

    我想在使用 VS2013 SDK 安装的 VS2013 中的控制台应用程序上添加以下引用 Microsoft VisualStudio ExtensionManager Microsoft VisualStudio ExtensionMan
  • Xcode 6.1 文件中缺少所需的架构 X86_64

    在 Xcode 6 1 中 我收到 iPhone 6 iPhone 5s iOS 7 1 的错误 其中显示 Undefined symbols for architecture x86 64 OBJC CLASS ClientAuthent
  • 如何在画布上制作弹跳球的动画

    你好 我刚刚开始编写 Java 和 HTML 等代码 所以有时我会遇到困难 因此 我加入 StackOverflow 寻求您的帮助 请对我好一点 我正在尝试使用动画setInterval 并绘制方法来创建一个弹跳球 该球在每帧中移动多个像素
  • OPENCV waitKey()方法返回类型

    我正在尝试使用在线教程学习 OPENCV 用于图像处理项目 opencv 文档说 waitKey 返回一个 int 这应该是按下的键的 ASCII 值 但大多数在线教程都使用以下代码 可以正常编译和运行 if char 27 waitKey
  • Python XML 解析和 getElementsByTagName

    我试图解析以下 xml 并围绕我的业务需求获取我感兴趣的特定标签 我想我做错了什么 不知道如何解析我所需的标签 想要利用 pandas 以便我可以进一步过滤细节 学弟学妹们多多支持 我的 XML 来自 URI
  • Clojure core.logic CLP(FD) 投影 FD 变量

    我正在使用 Clojure 的 core logic CLP FD 库 core logic 版本 0 8 3 开发一种简单的方形打包算法 正方形表示如下 x11 y11 x12 y12 x21 y21 x22 y22 每个正方形表示为其左
  • 如何防止 scanf() 永远等待输入字符?

    我想在控制台应用程序中完成以下任务 如果用户输入一个字符 应用程序将执行以下操作 相应的任务 例如 如果用户输入1 该程序 如果用户输入 将执行任务 1q 程序将退出 如果用户没有输入任何内容 程序将每隔10秒执行一次默认任务 时间不必很严
  • 从 Excel VBA 关闭 Word 应用程序

    我试图在宏开始时关闭所有打开的 Word 应用程序实例 尽管我不知道哪些文档已打开 并且无法将它们设置为对象 这将关闭所有正在运行的 Word 文档 你需要On Error Resume Next以防止在没有运行 Word 应用程序实例时出
  • 如何从webview中获取html内容?

    从 webview 获取 html 代码的最简单方法是什么 我尝试了stackoverflow和google的几种方法 但找不到确切的方法 请说一下具体的方法 public class htmldecoder extends Activit
  • 构造函数中的依赖注入容器

    为什么将容器放在构造函数中这么糟糕 例如 您想要在另一个类 C 的构造函数中解析类 B 因为您需要将类 B 与解析的依赖项一起使用 您开始按照您希望的方式使用类 C 就像使用 B 一样 但使用依赖关系已解决 为什么将容器放在构造函数中这么糟
  • 从嵌入的 Google 表格中删除 Google 边框

    我希望将 Google 表格嵌入到 Google 扩展程序中 足够简单 只需使用自动生成的嵌入代码并将其粘贴到 html 文件中即可 这就是我所做的
  • iOS otool 检测私有 api [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我是第一次 ios 开发人员 找不到任何有关私有 ap
  • 为什么在 JavaScript 中“Object instanceof Function”和“Function instanceof Object”都返回 true?

    为什么在 JavaScript 中同时执行这两项操作Object instanceof Function and Function instanceof Object return true 我在 Safari WebInspector 中
  • 詹金斯在失败的阶段继续管道

    我有一个带有一堆管道的詹金斯设置 我编写了一个新的管道 可以立即启动所有管道 我想建造其他阶段 即使其中一个阶段失败了 目前的脚本看起来像这样 stage CentOS6 build centos6 testing stage CentOS
  • Nokogiri 可以解释 javascript 吗? - 网页抓取

    我们正在尝试抓取此页面上的可用性 http www equityapartments com new york new york city apartments midtown west mantena apartments aspx 我需
  • 增加 FD_SETSIZE 的限制并选择

    我想增加我的系统的 FD SETSIZE 宏值 有没有办法增加 FD SETSIZE 这样 select 就不会失败 按照标准 没有办法增加FD SETSIZE 一些程序和库 例如 libevent 尝试通过为fd set对象并传递大于的值
  • MongoDB 基于每个元素对多个文档中的数组求和

    我有以下文档结构 针对此示例进行了简化 id ObjectId sdfsdf result 1 3 5 7 9 id ObjectId asdref result 2 4 6 8 10 我想得到这些的总和result数组 但不是总和 而是一