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

เปรียบเทียบฟิลด์ใน MongoDB Aggregation ด้วย $cmp

ใช้ $cmp ใน $project แล้ว $match

โอเปอเรเตอร์ $cmp เปรียบเทียบค่าสองฟิลด์ คืนค่า: 1 (มากกว่า), 0 (เท่ากัน), -1 (น้อยกว่า)

ตัวอย่าง

สร้างคอลเลกชัน matchBetweenFieldsDemo:

> db.matchBetweenFieldsDemo.insertOne({"FirstValue":40,"SecondValue":70});
> db.matchBetweenFieldsDemo.insertOne({"FirstValue":20,"SecondValue":5});

Aggregation: หาเอกสารที่ FirstValue > SecondValue

> db.matchBetweenFieldsDemo.aggregate([
    {$project: {
        firstGreaterThanOrNot: {$cmp: ['$FirstValue', '$SecondValue']}
    }},
    {$match: {firstGreaterThanOrNot: {$gt: 0}}}
]);

ผลลัพธ์:

{ "_id" : ObjectId("..."), "firstGreaterThanOrNot" : 1 }

เอกสารที่สอง (FirstValue=20, SecondValue=5) มี FirstValue มากกว่า จึงถูกคืนกลับมา

การใช้งานอื่น

สามารถใช้ $cmp ใน $project เพื่อสร้างฟิลด์ flag แล้วค่อย $match หรือ $group ต่อได้