Fix config formatting
[gitter.git] / scripts / useful-queries / busiest-rooms-by-chats.mongo
blob366439c619ca1396aa163974718ef4f1308fdd43
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: '$toTroupeId',
22     days: { $addToSet: { $dayOfYear: "$sent" } },
23     users: { $addToSet: "$fromUserId" },
24     count: { $sum: 1 }
25   },
26 }, {
27   $project: {
28     roomId: '$_id',
29     days: { $size: '$days' },
30     uniqueUserCount: { $size: '$users' },
31     count: '$count'
32   }
33 }, {
34   $sort: {
35     count: -1
36   }
37 }, {
38   $limit: 1000
39 }, {
40   $match: {
41     uniqueUserCount: { $gt: 3 }
42   }
43 }, {
44   $lookup: {
45     from: "troupes",
46     localField: "roomId",
47     foreignField: "_id",
48     as: "troupe"
49   }
50 }, {
51   $unwind: "$troupe"
52 }, {
53   $project: {
54     roomId: '$_id',
55     uri: '$troupe.uri',
56     public: '$troupe.sd.public',
57     totalUsers: '$troupe.userCount',
58     activeUsers: '$uniqueUserCount',
59     activeDays: '$days',
60     totalMessages: '$count'
61   }
62 }]);
64 print('uri,public,activeDays,totalMessages,activeUsers,totalUsers')
65 a.forEach(function(i) {
66   print(i.uri + ',' + i.public + ',' + i.activeDays + ',' + i.totalMessages + ',' + i.activeUsers + ',' + i.totalUsers)