ใช้ Stage $project ร่วมกับ Operator $add ใน Aggregation Pipeline เพื่อคำนวณผลรวมของสองฟิลด์
รูปแบบคำสั่ง
db.collection.aggregate([
{ $project: {
field1: 1,
field2: 1,
sumField: { $add: [ "$field1", "$field2" ] }
}}
]);
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.sumTwoFieldsDemo.insertOne({ "FirstValue": 150, "SecondValue": 350 });
> db.sumTwoFieldsDemo.insertOne({ "FirstValue": 450, "SecondValue": 1550 });
> db.sumTwoFieldsDemo.insertOne({ "FirstValue": 2560, "SecondValue": 2440 });
2. แสดงข้อมูลทั้งหมด
> db.sumTwoFieldsDemo.find().pretty();
{ "_id" : ..., "FirstValue" : 150, "SecondValue" : 350 }
{ "_id" : ..., "FirstValue" : 450, "SecondValue" : 1550 }
{ "_id" : ..., "FirstValue" : 2560, "SecondValue" : 2440 }
3. Aggregation: รวม FirstValue + SecondValue
> db.sumTwoFieldsDemo.aggregate([
{ $project: {
'First': '$FirstValue',
'Second': '$SecondValue',
'TotalValueOfBothFields': { $add: [ '$FirstValue', '$SecondValue' ] }
}}
]);
4. ผลลัพธ์
{ "_id" : ..., "First" : 150, "Second" : 350, "TotalValueOfBothFields" : 500 }
{ "_id" : ..., "First" : 450, "Second" : 1550, "TotalValueOfBothFields" : 2000 }
{ "_id" : ..., "First" : 2560, "Second" : 2440, "TotalValueOfBothFields" : 5000 }
Arithmetic Operators ใน $project
| Operator | ตัวอย่าง | คำอธิบาย |
|---|---|---|
$add | { $add: [ "$a", "$b" ] } | บวก (รองรับ Date + Number = Date) |
$subtract | { $subtract: [ "$a", "$b" ] } | ลบ |
$multiply | { $multiply: [ "$a", "$b" ] } | คูณ |
$divide | { $divide: [ "$a", "$b" ] } | หาร |
$mod | { $mod: [ "$a", "$b" ] } | Modulo (เศษ) |