MongoDB : Calculating wrongly in mapReduce -


this collection named logins

db.logins.find().pretty()         "cust_id" : "testuser",        "created_at" : "2011-03-11 10:31:02.765"        "cust_id" : "testuser",       "created_at" : "2011-03-11 10:31:02.765" 

i trying find out logins of each user based on date

i tried way

var m = function() {     var aux = this.created_at.indexof(' ');     emit({cust:this.cust_id,daterr:this.created_at.substring(0,aux)},1); }  var r = function(k, values) {   var l = values.length;   var r = 0;   var i;   (i=0; i<l; i++) {     r+=l;   }   return r; }   q = function() {         var query = {"created_at": {$lt: "2013-04-30 11:19:52.587"}}         return query;     }  db.logins.mapreduce(m, r, { query : q(), out :  "userlogincountmonthly" }); 

i getting following output

db.userlogincountmonthly.find().pretty()  { "_id" : { "cust" : "testuser", "daterr" : "2011-03-11" }, "value" : 4 } 

what see value must 2 , shown 4

could please tell me why displaying wrong ??

i may totally off in since i've never used mongodb's mapreduce , i'm not quite sure you're trying achieve in reduce, looks wrong;

var l = values.length; var r = 0; var i; (i=0; i<l; i++) {   r+=l; } return r; 

if values.length 2, loop twice, each time adding 2, returning 4.

as far can see since want count, simple return values.length make more sense reduce function.


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

ruby - Nesting modules inside of a Rails eninge gem -

Eclipse formatter for java ending braces -