Skip to content

Instantly share code, notes, and snippets.

@tomPorter
Created March 25, 2010 14:54
Show Gist options
  • Save tomPorter/343632 to your computer and use it in GitHub Desktop.
Save tomPorter/343632 to your computer and use it in GitHub Desktop.
mongo ruby driver mapreduce
require 'rubygems'
require 'mongo'
def db
$db ||= Mongo::Connection.new("localhost", 27017).db("ruby-mongo-examples")
end
def zips
$zips ||= db.collection("test")
end
class Chart
@@reduce_count = "function(key, values) { " +
"var sum = 0; " +
"values.forEach(function(f) { " +
" sum += f.count; " +
"}); " +
"return {count: sum};" +
"};"
def self.zip_counts
@map = "function() { emit(this.zip, {count: 1}); }"
@reduce = @@reduce_count
#@results = logs.map_reduce(@map, @reduce,{'query'=> {"zip" => "14850"}})
@results = zips.map_reduce(@map, @reduce)
end
end
@s = Chart.zip_counts
@s.find({'value.count' => {'$gte' => 60}}).sort('value.count',-1).to_a.each do |f|
puts "#{f['_id']} : #{f['value']['count']}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment