$where অপারেটর ব্যবহার করে একই ডকুমেন্টের নেস্টেড ফিল্ড তুলনা
MongoDB-এ একই ডকুমেন্টের ভেতরে থাকা দুটি নেস্টেড অবজেক্টের ফিল্ড তুলনা করতে $where এ জাভাস্ক্রিপ্ট এক্সপ্রেশন ব্যবহার করা হয়।
নমুনা ডেটা
> db.queryInSameDocumentsDemo.insertOne({
"StudentDetails": { "StudentName": "John" },
"NewStudentDetails": { "StudentName": "Carol" }
});
> db.queryInSameDocumentsDemo.insertOne({
"StudentDetails": { "StudentName": "Bob" },
"NewStudentDetails": { "StudentName": "Bob" }
});
Case 1: সমান (==) ফিল্ড খুঁজে বের করা
> db.queryInSameDocumentsDemo.find({
$where: "this.StudentDetails.StudentName == this.NewStudentDetails.StudentName"
}).pretty();
{
"_id" : ObjectId("5c900a435705caea966c5573"),
"StudentDetails" : { "StudentName" : "Bob" },
"NewStudentDetails" : { "StudentName" : "Bob" }
}
Case 2: অসমান (!=) ফিল্ড খুঁজে বের করা
> db.queryInSameDocumentsDemo.find({
$where: "this.StudentDetails.StudentName != this.NewStudentDetails.StudentName"
}).pretty();
{
"_id" : ObjectId("5c90096ed3c9d04998abf017"),
"StudentDetails" : { "StudentName" : "John" },
"NewStudentDetails" : { "StudentName" : "Carol" }
}
সতর্কতা: $where জাভাস্ক্রিপ্ট エンジン চালায়, যা ধীর। MongoDB 3.6+ এ $expr অপারেটর ব্যবহার করুন যা ইনডেক্স ব্যবহার করতে পারে এবং দ্রুত:
db.collection.find({
$expr: { $eq: ["$StudentDetails.StudentName", "$NewStudentDetails.StudentName"] }
});