Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีรวม (Sum) สองฟิลด์ใน MongoDB ด้วย Aggregation $project และ $add

ใช้ 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

ขยาย: รวมหลายฟิลด์ + เงื่อนไข

db.collection.aggregate([
    { $project: {
        total: { 
            $add: [ 
                { $ifNull: ["$field1", 0] },
                { $ifNull: ["$field2", 0] },
                { $ifNull: ["$field3", 0] }
            ] 
        }
    }}
]);

สรุป

  • ใช้ $project + $add: [ "$field1", "$field2" ] รวมสองฟิลด์
  • ใช้ $ifNull ป้องกันค่า null/missing
  • สามารถรวมได้หลายฟิลด์ใน $add เดียว
  • รองรับ Number, Date (Date + Number = New Date)
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 (เศษ)