Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- try {
- var cursor = (function(ctStartHoursAgo, ctEndHoursAgo, ltStartHoursAgo, ltEndHoursAgo) {
- var hoursAgoUtc = function(hour) { return Math.round((new Date().getTime() / 1000) - (hour * 60 * 60)); };
- var ctStartSecsAgo = hoursAgoUtc(ctStartHoursAgo);
- var ctEndSecsAgo = hoursAgoUtc(ctEndHoursAgo);
- var ltStartSecsAgo = hoursAgoUtc(ltStartHoursAgo);
- var ltEndSecsAgo = hoursAgoUtc(ltEndHoursAgo);
- var map = function() { var returnCount = (this.lt > ltStartSecsAgo && this.lt < ltEndSecsAgo) ? 1 : 0; emit(this._id.aid, {c: 1, r: returnCount }); };
- var reduce = function(key, vals) { var count = 0, returns = 0; for (var i in vals) { count += vals[i].c; returns += vals[i].r; } return { c: count, r: returns }; };
- var finalize = function (key, val) { var returnRate = val.r / val.c; return { returns: val.r, count: val.c, returnRate: returnRate }; };
- var query = { "ct": { "$gt": ctStartSecsAgo, "$lt": ctEndSecsAgo } };
- var options = { query: query, finalize: finalize };
- var res = db.userAnalytic.mapReduce(map, reduce, options);
- return db[res.result].find({"value.returnRate":{$gt:0},"value.count":{$gt:10}}).sort({"value.returnRate":-1});
- })(21,20,8,0);
- } catch (ex) { print(ex); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement