class Prolly::Ps::Storage::Mongodb
Attributes
session[R]
Public Class Methods
new()
click to toggle source
Calls superclass method
Prolly::Ps::Storage::Base::new
# File lib/prolly/ps/storage/mongodb.rb, line 14 def initialize @session ||= Moped::Session.new(["127.0.0.1:27017", "127.0.0.1:27018"]) @session.use 'pspace' super @rand_vars = [] end
Public Instance Methods
add(datum)
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 27 def add(datum) # create an index for each new datum key #new_rvs(datum).each do |rv| # @session.indexes.create(rv.to_sym => 1) #end record_new_rand_vars(datum) @session[:samples].insert(datum) end
count(rvs, options = {})
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 38 def count(rvs, options = {}) reload = options["reload"] || false if rvs.kind_of?(Array) @session[:samples].find( Hash[*rvs.flat_map { |rv| [rv, { '$exists' => true }] }] ).count elsif rvs.kind_of?(Hash) @session[:samples].find(to_query_hash(rvs)).count end end
rand_vars()
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 49 def rand_vars @session[:rand_vars].find.map { |rv| rv[:name] } end
reset()
click to toggle source
Calls superclass method
Prolly::Ps::Storage::Base#reset
# File lib/prolly/ps/storage/mongodb.rb, line 22 def reset super @session['samples'].drop end
uniq_vals(name)
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 53 def uniq_vals(name) @session[:samples].aggregate([ { "$match" => { name.to_sym => { "$exists" => true } } }, { "$group" => { "_id": "$#{name}" } } ]).map { |e| e["_id"] } end
Private Instance Methods
new_rvs(datum)
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 62 def new_rvs(datum) return datum.keys - rand_vars end
record_new_rand_vars(datum)
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 66 def record_new_rand_vars(datum) new_rvs(datum).each do |rv| @session[:rand_vars].insert({ name: rv }) end end
to_query_hash(rvs)
click to toggle source
# File lib/prolly/ps/storage/mongodb.rb, line 72 def to_query_hash(rvs) Hash[*rvs.flat_map { |k, v| [k, v.kind_of?(Array) ? { "$in" => v } : v] }] end