当前位置: 首页 > 知识库问答 >
问题:

将两个字段的和添加到文档中的新字段

黄君博
2023-03-14

我想计算两个字段的总和,然后在文档中创建新的字段,比如:“total sum”。但我不知道怎么做。都在MongoDB中。这里有一个例子:

    const obj = {
      name: 'John',
      foo: {
        fooA: 8753.19,
        fooB: 8753.19,
      },
      bar: {
        barA: 196.99,
        barB: 196.99,
      },
    };
    
    //Should be:
    const obj = {
      name: 'John',
      foo: {
        fooA: 8753.19,
        fooB: 8753.19,
        total: fooA+fooB
      },
      bar: {
        barA: 196.99,
        barB: 196.99,
        total: barA+barB
      },
    };

共有2个答案

杭曦
2023-03-14

如果它是mongodb特定的,那么这可能不能准确地解决问题,而只是一个完成工作的纯函数。

我编写了一个名为calc的函数来解决您的问题,您可以传入obj,它将返回您想要的输出。

注意这是非常具体的你的输入,所以如果你有不同的一个请让我知道。

函数calc:

function calc(originalObj) {
    const obj = {...originalObj};
    for(const key in obj) {
        if(key !== 'name') {
            console.log(obj[key][`${key}A`], `${key}A`, obj)
            obj[key].totalSum = obj[key][`${key}A`] + obj[key][`${key}B`];
        }

    }
    return console.log(obj);

}
卫弘义
2023-03-14

演示-https://mongoplayground.net/p/40dnymmneyu

使用$addfields添加新文件总计,使用$add计算值

db.collection.aggregate({
  $addFields: {
    "foo.total": { $add: [ "$foo.fooA", "$foo.fooB" ] },
    "bar.total": { $add: [ "$bar.barA", "$bar.barB" ] }
  }
})

输出

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "bar": {
      "barA": 196.99,
      "barB": 196.99,
      "total": 393.98
    },
    "foo": {
      "fooA": 8753.19,
      "fooB": 8753.19,
      "total": 17506.38
    },
    "name": "John"
  }
]
 类似资料:
  • 我有一个类似这样的mongoDocument结构,注释字段作为嵌入文档。 我想添加 “newField” : “something” 到 嵌入的注释字段中 “cid” : “17426944” : 在java驱动程序中,我尝试了: 这里的问题是: 示例文档: 我需要什么 : 请帮帮我,谢谢vijay

  • 我不得不向现有文档添加一个新字段/s。 下面是用于测试目的的过程AddNewField。 我做错了什么? 在调用fmongo.update后,我的收藏现在有两个文档!

  • 如果我的问题不是很具体,下面是我想做的。我有一个计算器,它有两个JTextField,一个JLabel(“Answer=”),一个JTextField作为答案。 我有一个JButton数组(0到9),允许用户点击它们,将数字添加到JTextField中,光标在其中处于活动状态。。。这就是问题所在。我只能让两个文本字段中的一个向它们添加数字,或者两者都向彼此添加相同的数字。 例如,如果我点击一个按钮

  • 我使用iText将数据填充到PDF中现有的AcroForm字段中。 我现在正在寻找将新的AcroForm字段添加到PDF的解决方案。iText是否可以做到这一点?如果是,我该如何做到这一点?

  • 问题内容: 如果我的问题不是很具体,这就是我想要做的。我有一个具有两个JTextField,一个JLabel(“ Answer =”)和一个JTextField作为答案的计算器。 我有一个JButtons数组(0到9),允许用户单击它们以将数字添加到JTextField中,其中的光标处于活动状态…这是这里的问题。我只能让两个文本字段之一向它们添加数字,或者都向彼此添加相同的数字。 例如,如果我单击

  • 假设我有两份文件。 一个是有大约2-3页的主模板。第二个只有一段文字与各种风格(粗体,斜体,下划线,字体大小等)。 我想用第二个文档中的段落替换模板中的一个参数。 null