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

MongoDB Query เปรียบเทียบสองฟิลด์ด้วย $where

ใช้ 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 สำหรับเปรียบเทียบฟิลด์ภายในเอกสารเดียวกัน