คุณสามารถใช้ตัวดำเนินการ $cmp สำหรับสิ่งนี้ เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
<ก่อน>> db.matchBetweenFieldsDemo.insertOne({"FirstValue":40,"SecondValue":70});{ "acknowledged" :true, "insertedId" :ObjectId("5c92c9625259fcd19549980d")}> db.matchBetweenFieldsDemo {"FirstValue":20,"SecondValue":5});{ "รับทราบ" :จริง "insertedId" :ObjectId("5c92c96b5259fcd19549980e")}แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −
> db.matchBetweenFieldsDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" :ObjectId("5c92c9625259fcd19549980d"), "FirstValue" :40, "SecondValue" :70}{ "_id" :ObjectId("5c92c96b5259fcd19549980e"), "FirstValue" :20,"SecondV" }
นี่คือแบบสอบถามเพื่อจับคู่ $ ระหว่างฟิลด์ในกรอบการรวม -
> db.matchBetweenFieldsDemo.aggregate([ ... {$project:{ ... ... firstGreaterThanOrNot:{$cmp:['$FirstValue', '$SecondValue']} ... }}, . .. {$match:{firstGreaterThanOrNot:{$gt:0}}}... ]);
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" :ObjectId("5c92c96b5259fcd19549980e"), "firstGreaterThanOrNot" :1 }