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

MongoDB Query เปรียบเทียบค่าของ 2 Field

Query เปรียบเทียบค่าระหว่าง 2 Field ด้วย $where

ใช้ Operator $where พร้อม JavaScript Function เพื่อเปรียบเทียบค่าของ 2 Field ใน Document เดียวกัน

db.yourCollectionName.find( { $where: function() { return this.yourFirstFieldName < this.yourSecondFieldName } } ).pretty();

สร้างข้อมูลตัวอย่าง

> db.comparingTwoFieldsDemo.insertOne({"StudentName":"John","StudentAge":21,"StudentMathMarks":99,"StudentPhysicsMarks":98});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ac09e6cea1f28b7aa0807") }
> db.comparingTwoFieldsDemo.insertOne({"StudentName":"Carol","StudentAge":22,"StudentMathMarks":79,"StudentPhysicsMarks":89});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ac0b46cea1f28b7aa0808") }
> db.comparingTwoFieldsDemo.insertOne({"StudentName":"David","StudentAge":24,"StudentMathMarks":39,"StudentPhysicsMarks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ac0c96cea1f28b7aa0809") }
> db.comparingTwoFieldsDemo.insertOne({"StudentName":"Bob","StudentAge":23,"StudentMathMarks":87,"StudentPhysicsMarks":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ac0e06cea1f28b7aa080a") }

แสดงข้อมูลทั้งหมด

> db.comparingTwoFieldsDemo.find().pretty();
{ "_id" : ObjectId("5c8ac09e6cea1f28b7aa0807"), "StudentName" : "John", "StudentAge" : 21, "StudentMathMarks" : 99, "StudentPhysicsMarks" : 98 }
{ "_id" : ObjectId("5c8ac0b46cea1f28b7aa0808"), "StudentName" : "Carol", "StudentAge" : 22, "StudentMathMarks" : 79, "StudentPhysicsMarks" : 89 }
{ "_id" : ObjectId("5c8ac0c96cea1f28b7aa0809"), "StudentName" : "David", "StudentAge" : 24, "StudentMathMarks" : 39, "StudentPhysicsMarks" : 45 }
{ "_id" : ObjectId("5c8ac0e06cea1f28b7aa080a"), "StudentName" : "Bob", "StudentAge" : 23, "StudentMathMarks" : 87, "StudentPhysicsMarks" : 78 }

Query ที่ StudentMathMarks น้อยกว่า StudentPhysicsMarks

> db.comparingTwoFieldsDemo.find( { $where: function() { return this.StudentMathMarks < this.StudentPhysicsMarks } } ).pretty();
{ "_id" : ObjectId("5c8ac0b46cea1f28b7aa0808"), "StudentName" : "Carol", "StudentAge" : 22, "StudentMathMarks" : 79, "StudentPhysicsMarks" : 89 }
{ "_id" : ObjectId("5c8ac0c96cea1f28b7aa0809"), "StudentName" : "David", "StudentAge" : 24, "StudentMathMarks" : 39, "StudentPhysicsMarks" : 45 }

หมายเหตุ: $where ใช้ JavaScript ทำให้ช้ากว่า Operator ธรรมดา ควรใช้เฉพาะเมื่อจำเป็น