在MongoDB中的对象数组上使用$subtract

在MongoDB中的对象数组上使用$subtract,mongodb,aggregation-framework,Mongodb,Aggregation Framework,以藏品为例 { "name": "Student1", "marks": [ { "subject": "Subject1", "marks": 12 }, { "subject": "Subject2", "marks": 15 }, { "subject": "Subject3", "marks": 20 } ] } 我正在尝试对分数执行$减法。我尝试了如下的

以藏品为例

{   "name": "Student1",   "marks": [
    {
      "subject": "Subject1",
      "marks": 12
    },
    {
      "subject": "Subject2",
      "marks": 15
    },
    {
      "subject": "Subject3",
      "marks": 20
    }   ] }
我正在尝试对分数执行$减法。我尝试了如下的聚合

db.mycoll.aggregate(
[
      {
        "$addFields": {
          diff: {$subtract:["$marks.0.marks","$marks.1.marks","$marks.2.marks"]}
        }
      }
    ]
)
这种方法似乎不起作用。我犯了一个错误

"Couldn't execute query: cant $subtract a array from a array"

您应该能够利用运算符的使用来实现所需的输出,如下所示:

db.mycoll.aggregate([
    {
        "$addFields": {
            "diff": { 
                "$reduce": { // expression returns difference
                    "input": "$marks",
                    "initialValue": 0,
                    "in": { "$subtract": ["$$this.marks", "$$value"] }
                }
            }
        }
    }
])

您能否通过提问向我们展示您预期的JSON输出?减法通常包含两个值。你到底想计算什么?