Skip to content

Commit

Permalink
fix: Performance issue on Engagement Dashboard aggregation (#30022)
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigok authored and sampaiodiego committed Aug 9, 2023
1 parent 9b5da10 commit 65cb496
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 16 deletions.
5 changes: 5 additions & 0 deletions .changeset/heavy-cougars-marry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@rocket.chat/meteor': patch
---

Fix performance issue on Engagement Dashboard aggregation
52 changes: 36 additions & 16 deletions apps/meteor/server/models/raw/Messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,32 @@ export class MessagesRaw extends BaseRaw<IMessage> implements IMessagesModel {
getTotalOfMessagesSentByDate({ start, end, options = {} }: { start: Date; end: Date; options?: PaginatedRequest }): Promise<any[]> {
const params: Exclude<Parameters<Collection<IMessage>['aggregate']>[0], undefined> = [
{ $match: { t: { $exists: false }, ts: { $gte: start, $lte: end } } },
{
$group: {
_id: {
rid: '$rid',
date: {
$dateToString: { format: '%Y%m%d', date: '$ts' },
},
},
messages: { $sum: 1 },
},
},
{
$group: {
_id: '$_id.rid',
data: {
$push: {
date: '$_id.date',
messages: '$messages',
},
},
},
},
{
$lookup: {
from: 'rocketchat_room',
localField: 'rid',
localField: '_id',
foreignField: '_id',
as: 'room',
},
Expand All @@ -236,8 +258,9 @@ export class MessagesRaw extends BaseRaw<IMessage> implements IMessagesModel {
},
},
{
$group: {
_id: {
$project: {
data: '$data',
room: {
_id: '$room._id',
name: {
$cond: [{ $ifNull: ['$room.fname', false] }, '$room.fname', '$room.name'],
Expand All @@ -246,25 +269,22 @@ export class MessagesRaw extends BaseRaw<IMessage> implements IMessagesModel {
usernames: {
$cond: [{ $ifNull: ['$room.usernames', false] }, '$room.usernames', []],
},
date: {
$concat: [{ $substr: ['$ts', 0, 4] }, { $substr: ['$ts', 5, 2] }, { $substr: ['$ts', 8, 2] }],
},
},
messages: { $sum: 1 },
type: 'messages',
},
},
{
$unwind: {
path: '$data',
},
},
{
$project: {
_id: 0,
date: '$_id.date',
room: {
_id: '$_id._id',
name: '$_id.name',
t: '$_id.t',
usernames: '$_id.usernames',
},
type: 'messages',
messages: 1,
date: '$data.date',
room: 1,
type: 1,
messages: '$data.messages',
},
},
];
Expand Down

0 comments on commit 65cb496

Please sign in to comment.