Skip to content

Instantly share code, notes, and snippets.

@eedrummer
Created December 15, 2010 03:10
Show Gist options
  • Save eedrummer/741573 to your computer and use it in GitHub Desktop.
Save eedrummer/741573 to your computer and use it in GitHub Desktop.
Using Underscore.js with MongoDB
require 'mongo'
require 'ap'
include Mongo
# Create a connection to a local MongdDB Instance
db = Connection.new.db('underscore-demo')
# Read and eval Underscore.js
underscore = File.read('underscore-min.js')
db.eval(underscore)
# Create some sample data
db['cars'].save({:make => 'Chevy', :model => 'Corvette', :year => 2011})
db['cars'].save({:make => 'Chevy', :model => 'Corvette', :year => 2010})
db['cars'].save({:make => 'Chevy', :model => 'Camero', :year => 2011})
db['cars'].save({:make => 'Toyota', :model => 'Camry', :year => 2011})
# Group by make with an array of models using _.any
result = db['cars'].group([:make], nil,
{:models => []},
'function(obj,prev) {
if (_.any(prev.models, function(item){return item == obj.model;}) == false) {
prev.models.push(obj.model);
}
};')
ap result.to_a # => [
# [0] {"make"=>"Chevy", "models"=>["Corvette", "Camero"]},
# [1] {"make"=>"Toyota", "models"=>["Camry"]}
# ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment