ใช้ Operator $where ร่วม find() เพื่อเปรียบเทียบค่าระหว่างสองฟิลด์ใน MongoDB ไวยากรณ์:
db.yourCollectionName.find({$where: "yourCondition"}).pretty();
สร้างข้อมูลตัวอย่าง
> db.compareTwoFields.insert({"Id":1,"FullName":{"FirstName":"John","LastName":"Smith"},"BranchName":"ComputerScience"});
WriteResult({ "nInserted" : 1 })
> db.compareTwoFields.insert({"Id":2,"FullName":{"FirstName":"Smith","LastName":"Smith"},"BranchName":"Civil"});
WriteResult({ "nInserted" : 1 })
>> db.compareTwoFields.insert({"Id":3,"FullName":{"FirstName":"David","LastName":"Smith"},"BranchName":"Mechanical"});
WriteResult({ "nInserted" : 1 })
แสดงเอกสารทั้งหมด
> db.compareTwoFields.find().pretty();
Query เปรียบเทียบ FirstName == LastName
> db.compareTwoFields.find({$where: "this.FullName.FirstName == this.FullName.LastName"}).pretty();
ผลลัพธ์ (เฉพาะ Id: 2 ที่ FirstName และ LastName เหมือนกันคือ "Smith")
{
"_id" : ObjectId("5c6c239868174aae23f5ef65"),
"Id" : 2,
"FullName" : { "FirstName" : "Smith", "LastName" : "Smith" },
"BranchName" : "Civil"
}
หมายเหตุ:$whereรัน JavaScript ช้ากว่า Query ธรรมดา ควรใช้เฉพาะกรณีจำเป็น ใน MongoDB ใหม่แนะนำ$exprใน Aggregation สำหรับเปรียบเทียบฟิลด์ภายในเอกสารเดียวกัน