mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 10:06:08 -05:00
91 lines
No EOL
2.4 KiB
JavaScript
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) + "%");
|
|
} |