গড় দৈনিক ডকুমেন্ট কাউন্ট: অ্যাগ্রিগেশন
MongoDB-এ একটি সময় পরিসরে মোট ডকুমেন্ট সংখ্যা এবং দিনের সংখ্যা দিয়ে গড় দৈনিক কাউন্ট বের করতে অ্যাগ্রিগেশন পাইপলাইন ব্যবহার করা হয়।
নমুনা ডেটা তৈরি
> db.demo451.insertOne({ DueDate: new ISODate("2020-03-15T10:50:35.000Z"), Value: 10 })
> db.demo451.insertOne({ DueDate: new ISODate("2020-03-14T10:50:35.000Z"), Value: 10 })
> db.demo451.insertOne({ DueDate: new ISODate("2020-03-13T10:50:35.000Z"), Value: 10 })
সমস্ত ডকুমেন্ট দেখানো
> db.demo451.find()
আউটপুট:
{ "_id": ObjectId("..."), "DueDate": ISODate("2020-03-15T10:50:35Z"), "Value": 10 }
{ "_id": ObjectId("..."), "DueDate": ISODate("2020-03-14T10:50:35Z"), "Value": 10 }
{ "_id": ObjectId("..."), "DueDate": ISODate("2020-03-13T10:50:35Z"), "Value": 10 }
গড় দৈনিক ভ্যালু বের করার কোয়েরি
> db.demo451.aggregate([
{ $match: { DueDate: { $lt: new ISODate() } } },
{ $group: {
_id: null,
olderDate: { $min: "$DueDate" },
sumValue: { $sum: "$Value" }
}},
{ $project: {
_id: 0,
averageValue: {
$divide: [
"$sumValue",
{ $divide: [
{ $subtract: [new ISODate(), "$olderDate"] },
1000 * 60 * 60 * 24
]}
]
}
}}
])
ফলাফল:
{ "averageValue": 2.475558456547562 }
ব্যাখ্যা
$match: ভবিষ্যতের ডেটা বাদ দিয়ে শুধু অতীত/বর্তমান ডেটা নেয়$group: সাবচেয়ে পুরনো ডেট (olderDate) এবং মোট ভ্যালু (sumValue) বের করে$project: গড় বের করার ফর্মুলা:sumValue / ((now - olderDate) in milliseconds / 86400000)- মিলিসেকেন্ডকে দিনে রূপান্তর: ১০০০ × ৬০ × ৬০ × ২৪ = ৮৬,৪০০,০০০
সতর্কতা: এটি সময়ের সাথে সাথে পরিবর্তিত হবে কারণ new ISODate() বর্তমান সময় নেয়। প্রোডাকশনে নির্দিষ্ট এন্ড ডেট ব্যবহার করুন।