MongoDB-এ একাধিক ফিল্ডের যোগফল (sum) কোনো নির্দিষ্ট মান থেকে বড় হলে সেই ডকুমেন্টগুলো বের করতে $where অপারেটর ব্যবহার করুন।
উদাহরণ
প্রথমে কিছু ডকুমেন্ট তৈরি করুন:
> db.sumOfFieldIsGreaterThanDemo.insertOne({"Price1":10,"Price2":50,"Price3":40});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd84b8bf3115999ed511e6") }
> db.sumOfFieldIsGreaterThanDemo.insertOne({"Price1":11,"Price2":1,"Price3":120});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd84c6bf3115999ed511e7") }
> db.sumOfFieldIsGreaterThanDemo.insertOne({"Price1":10,"Price2":9,"Price3":6});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdd84d2bf3115999ed511e8") }
সকল ডকুমেন্ট দেখুন:
> db.sumOfFieldIsGreaterThanDemo.find();
আউটপুট:
{ "_id" : ObjectId("5cdd84b8bf3115999ed511e6"), "Price1" : 10, "Price2" : 50, "Price3" : 40 }
{ "_id" : ObjectId("5cdd84c6bf3115999ed511e7"), "Price1" : 11, "Price2" : 1, "Price3" : 120 }
{ "_id" : ObjectId("5cdd84d2bf3115999ed511e8"), "Price1" : 10, "Price2" : 9, "Price3" : 6 }
যোগফল ১০০-এর বেশি হলে ডকুমেন্ট বের করা
> db.sumOfFieldIsGreaterThanDemo.find({
$where: function() {
return this.Price1 + this.Price2 + this.Price3 > 100
}
});
আউটপুট:
{ "_id" : ObjectId("5cdd84c6bf3115999ed511e7"), "Price1" : 11, "Price2" : 1, "Price3" : 120 }
ব্যাখ্যা: শুধু দ্বিতীয় ডকুমেন্টের যোগফল (১১ + ১ + ১২০ = ১৩২) ১০০-এর বেশি, তাই সেটি ফলাফলে এসেছে।
সতর্কতা: $where জাভাস্ক্রিপ্ট এক্সিকিউশন ব্যবহার করে, তাই বড় ডেটাসেটে পারফরম্যান্স কম হতে পারে। সম্ভব হলে এগ্রিগেশন পাইপলাইন ($addFields, $match) ব্যবহার করুন।