I would like to calculate sum of two fields, then create new field in document something like: ‘totalSum’. But I dont know how to do this. All in mongodb. Here’s an example:
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
},
};
Advertisement
Answer
Demo – https://mongoplayground.net/p/40DnYmMnEyU
Use $addFields to add new fileds total, compute values using $add
db.collection.aggregate({
$addFields: {
"foo.total": { $add: [ "$foo.fooA", "$foo.fooB" ] },
"bar.total": { $add: [ "$bar.barA", "$bar.barB" ] }
}
})
Output
[
{
"_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"
}
]