Fix config formatting
[gitter.git] / scripts / useful-queries / chat-rooms-to-active-days-engagement.mongo
blob9f6695225aa9a354689fcf012dfb512f767d9973
1 rs.slaveOk()
3 var horizonTimestamp = Date.now() - 86400000 * 30;
5 function createIdForTimestampString(timestamp) {
6   var hexSeconds = Math.floor(timestamp/1000).toString(16);
8   while(hexSeconds.length < 8) {
9     hexSeconds = "0" + hexSeconds;
10   }
11   return ObjectId(hexSeconds + "0000000000000000");
14 var a = db.chatmessages.aggregate([{
15   $match: {
16     _id: { $gt: createIdForTimestampString(horizonTimestamp) },
17     sent: { $type: 'date' }
18   }
19 }, {
20   $group: {
21     _id: '$fromUserId',
22     rooms: { $addToSet: "$toTroupeId" },
23     days: { $addToSet: { $dayOfYear: "$sent" } }
24   },
25 }, {
26   $project: {
27     userId: '$_id',
28     activeRooms: { $size: '$rooms' },
29     activeDays: { $size: '$days' },
30   }
31 }, {
32   $group: {
33     _id: {
34       activeRooms: '$activeRooms',
35       activeDays: '$activeDays',
36     },
37     count: { $sum: 1 }
38   },
39 }, {
40   $project: {
41     activeRooms: '$_id.activeRooms',
42     activeDays: '$_id.activeDays',
43     count: '$count'
44   }
45 }, {
46   $sort: {
47     activeDays: -1,
48     activeRooms: -1
49   }
50 }]);
52 print('activeRooms,activeDays,count')
53 a.forEach(function(i) {
54   print(i.activeRooms + ',' + i.activeDays + ',' + i.count)