在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输出?减法通常包含两个值。你到底想计算什么?