Fix config formatting
[gitter.git] / scripts / useful-queries / new-users-across-community.js
blob31286c3896a18e090c33eba1d178715726688df2
1 var horizon = new Date(Date.now() - 86400000 * 90);
2 function objectIdFromDate(date) {
3   return Math.floor(date.getTime() / 1000).toString(16) + '0000000000000000';
6 var firstId = new ObjectId(objectIdFromDate(horizon));
8 var result = db.troupeusers.aggregate([
9   {
10     $match: {
11       _id: { $gt: firstId }
12     }
13   },
14   {
15     $group: {
16       _id: '$troupeId',
17       newUsers: { $addToSet: '$userId' }
18     }
19   },
20   {
21     $lookup: {
22       from: 'troupes',
23       localField: '_id',
24       foreignField: '_id',
25       as: 'troupe'
26     }
27   },
28   {
29     $unwind: '$troupe'
30   },
31   {
32     $project: {
33       _id: {
34         $cond: {
35           if: { $eq: ['$troupe.githubType', 'ORG'] },
36           then: '$troupe.lcUri',
37           else: '$troupe.lcOwner'
38         }
39       },
40       newUsers: 1
41     }
42   },
43   {
44     $match: { _id: { $ne: null } }
45   },
46   {
47     $unwind: '$newUsers'
48   },
49   {
50     $group: {
51       _id: '$_id',
52       newUsers: { $addToSet: '$newUsers' }
53     }
54   },
55   {
56     $project: {
57       _id: 1,
58       newUserCount: { $size: '$newUsers' }
59     }
60   },
61   {
62     $sort: {
63       newUserCount: -1
64     }
65   },
66   {
67     $limit: 200
68   }
69 ]);
71 print('Group\tCount');
73 result.forEach(function(x) {
74   print(x._id + '\t' + x.newUserCount);
75 });