codecombat/scripts/analytics/mongodb/queries/SignupsPerDay.js
2014-12-24 11:09:58 -08:00

91 lines
No EOL
2.4 KiB
JavaScript

// Print out signup conversions per day
// Usage:
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
// TODO: Dec 18th has more signups finished than started. Too good to be true.
var match={
"$match" : {
$or: [ {"event" : 'Started Signup'}, {"event" : 'Finished Signup'}]
}
};
proj1={"$project" : {
"_id" : 0,
"created" : 1,
"event" : 1,
"h" : {
"$hour" : "$created"
},
"m" : {
"$minute" : "$created"
},
"s" : {
"$second" : "$created"
},
"ml" : {
"$millisecond" : "$created"
}
}
};
var proj2={"$project" : {
"_id" : 0,
"event" : 1,
"created" : {
"$subtract" : [
"$created",
{
"$add" : [
"$ml",
{
"$multiply" : [
"$s",
1000
]
},
{
"$multiply" : [
"$m",
60,
1000
]
},
{
"$multiply" : [
"$h",
60,
60,
1000
]
}
]
}
]
}
}
};
var group={"$group" : {
"_id" : {
"m" : "$event",
"d" : "$created"
},
"count" : {
"$sum" : 1
}
}
};
var conversionsPerDay = {};
var sort = {$sort: { "_id.d" : -1}};
var cursor = db['analytics.log.events'].aggregate(match, proj1, proj2, group, sort);
while (cursor.hasNext()) {
var myDoc = cursor.next();
var key = myDoc._id.d.toDateString()
if (!conversionsPerDay[key]) conversionsPerDay[key] = {}
conversionsPerDay[key][myDoc._id.m] = myDoc.count;
}
for (key in conversionsPerDay) {
print(key + "\t" + conversionsPerDay[key]['Started Signup'] + "\t" + conversionsPerDay[key]['Finished Signup'] + "\t" + (conversionsPerDay[key]['Finished Signup'] / conversionsPerDay[key]['Started Signup'] * 100).toFixed(2) + "%");
}