MongoDB में $where से दो फ़ील्ड की तुलना करें
दो फ़ील्ड की तुलना करने के लिए, MongoDB में $where का उपयोग करें। आइए पहले दस्तावेज़ों के साथ एक संग्रह बनाते हैं:
> db.demo7.insertOne({"FirstName1":"JOHN","FirstName2":"John"}); { "acknowledged" : true, "insertedId" : ObjectId("5e0ccd1a25ddae1f53b6222f") }
> db.demo7.insertOne({"FirstName1":"Carol","FirstName2":"Mike"}); { "acknowledged" : true, "insertedId" : ObjectId("5e0ccd2725ddae1f53b62230") }
> db.demo7.insertOne({"FirstName1":"bob","FirstName2":"BOB"}); { "acknowledged" : true, "insertedId" : ObjectId("5e0ccd3225ddae1f53b62231") }
find() से सभी दस्तावेज़ प्रदर्शित करें:
> db.demo7.find();
आउटपुट:
{ "_id" : ObjectId("5e0ccd1a25ddae1f53b6222f"), "FirstName1" : "JOHN", "FirstName2" : "John" }
{ "_id" : ObjectId("5e0ccd2725ddae1f53b62230"), "FirstName1" : "Carol", "FirstName2" : "Mike" }
{ "_id" : ObjectId("5e0ccd3225ddae1f53b62231"), "FirstName1" : "bob", "FirstName2" : "BOB" }
एक फ़ील्ड पर ऑपरेशन करते हुए दो फ़ील्ड की तुलना करने का क्वेरी (केस-इनसेंसिटिव तुलना):
> db.demo7.find({$where: "this.FirstName1.toLowerCase() == this.FirstName2.toLowerCase()"});
आउटपुट:
सावधानी:
$whereजावास्क्रिप्ट अभिव्यक्ति का उपयोग करता है, जो धीमा हो सकता है और इंडेक्स का उपयोग नहीं करता। बड़े संग्रह के लिए$expr(MongoDB 3.6+) बेहतर विकल्प है।