mongodb - Mongo Group Query using the Ruby driver -


i've got working mongo query need translate ruby:

var reducer = function(current, result){     result.loginscount++;     result.lastlogints = math.max(result.lastlogints, current.timestamp); }  var finalizer = function(result){     result.lastlogindate = new date(result.lastlogints).toisostring().split('t')[0]; }  db.audit_log.group({      key : {user : true},         cond : {events : { $elemmatch : { action : 'login_success'}}},      initial : {lastlogints : -1, loginscount : 0},      reduce : reducer,      finalize : finalizer }) 

i'm hitting several sticking points getting work in ruby. i'm not familiar mongo, , i'm not sure pass arguments method calls. best guess, after connecting database , collection called audit_log:

audit_log.group({      "key" => {"user" => "true"},         "cond" => {"events" => { "$elemmatch" => { "action" => "login_success"}}},      "initial" => {"lastlogints" => -1, "loginscount" => 0},      "reduce" => "function(current, result){result.loginscount += 1}",      "finalize" => "function(result){ result.lastlogindate = new date(result.lastlogints).toisostring().split('t')[0]; } }) 

or that. i've tried using simpler aggregate operation using mongo docs, couldn't working, either. able simple queries return results. keys (key, cond, initial, etc.) necessary, or javascript?

this how function took shape using 1.10.0 mongo gem:

@db.collection("audit_log").group(   [:user, :events],   {'events' => { '$elemmatch' => { 'action' => 'login_success' }}},   { 'lastlogints' => -1, 'loginscount' => 0 },   "function(current, result){ result.loginscount++; result.lastlogints = math.max(result.lastlogints, current.timestamp);}",   "function(result){ result.lastlogindate = new date(result.lastlogints).toisostring().split('t')[0];}" ) 

with mongo driver, leave off keys: "key", "cond", "initial", "reduce", "finalize" , pass in respective values.

i've linked 2 approaches taken other users here , here.


Comments

Popular posts from this blog

javascript - how to protect a flash video from refresh? -

android - Associate same looper with different threads -

visual studio 2010 - Connect to informix database windows form application -