Hi Guy's, I am new to map / reduce and trying to figure out a way to collect the following data using map / reduce instead doing it my (slow) application logic:
I have a collection 'challenge' with a 1:n relation to a collection 'tasks'. Now I'd like to receive an array of results that gives top five heightest scored challenge. For map I tried something like: map = function () { emit(this.user_id, { count:1 }); } and reduce: reduce = function (key, score) { var sum = 0; score.forEach(function(doc){ sum += 1; }); return { count:sum }; } I fired this against my tasks collection: var mr = db.tasks.mapReduce(map, reduce, { out: "results" }); But I get crucial results when querying: db[mr.result].find(); I am using Mongoid on Rails and am completely lost with it. Can someone point me into the right direction? my data something like this /* 13 */ { "_id" : ObjectId("4ef1a6a454b53001a4000067"), "user_id" : "100002573213371", "title" : "social who wins", "description" : "social who wins", "updated_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "created_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "tasks" : [{ "is_complete" : 0, "score_by" : "Check box:1 for checking off the task", "score" : "5", "name" : "task no 1", "_id" : ObjectId("4ef1a6a454b53001a4000068") }, { "is_complete" : 0, "score_by" : "Self-report number", "score" : "6", "name" : "task no 2", "_id" : ObjectId("4ef1a6a454b53001a4000069") }], } /* 14 */ { "_id" : ObjectId("4ef1a6a454b53001a400006d"), "canCompleteBeforeTasks" : true, "challenge_id" : ObjectId("4ef1a6a454b53001a4000067"), "created_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "description" : "social who wins", "tasks" : [{ "is_complete" : 0, "score_by" : "Check box:1 for checking off the task", "score" : "5", "name" : "task no 1", "_id" : ObjectId("4ef1a6a454b53001a400006e") }, { "is_complete" : 0, "score_by" : "Self-report number", "score" : "7", "name" : "task no 2", "_id" : ObjectId("4ef1a6a454b53001a400006f") }], "title" : "social who wins", "updated_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "user_id" : "100003135115833" } /* 15 */ { "_id" : ObjectId("4ef1a6a454b53001a4000073"), "challenge_id" : ObjectId("4ef1a6a454b53001a4000067"), "created_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "description" : "social who wins", "tasks" : [{ "is_complete" : 0, "score_by" : "Check box:1 for checking off the task", "score" : "5", "name" : "task no 1", "_id" : ObjectId("4ef1a6a454b53001a4000074") }, { "is_complete" : 0, "score_by" : "Self-report number", "score" : "8", "name" : "task no 2", "_id" : ObjectId("4ef1a6a454b53001a4000075") }], "title" : "social who wins", "updated_at" : new Date("Wed, 21 Dec 2011 14:58:04 GMT +05:30"), "user_id" : "100003174704960" } Thx in advance. ++++++++++++++++++ Pravin Mishra -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.