आपके पास निम्नलिखित जैसी कोई चीज़ हो सकती है। फ़िल्टर करने के लिए मैच ऑपरेशन का उपयोग करें। इस उदाहरण में मैंने आपको last_week विवरण दिखाया है। मैंने उन सभी परिदृश्यों की जाँच की जिनका आपने ऊपर उल्लेख किया है। और यह ठीक काम कर रहा है
[{$match: {
$expr:{
$and:[
{$gt:["$createdAt",new Date(new Date()-14*60*60*24*1000)]},
{$lt:["$createdAt",new Date(new Date()-7*60*60*24*1000)]}
]
}
}}, {$group: {
_id: '$userId',
totalSeen: {
$sum: {
$cond: [
{
$eq: [
'$status',
'seen'
]
},
1,
0
]
}
},
total: {
$sum: 1
}
}}, {$project: {
_id: 0,
userId: '$_id',
notificationPercentage: {
$multiply: [
{
$divide: [
'$totalSeen',
'$total'
]
},
100
]
}
}}]