there's a bug in yours. not sure where yet. try d = DB.new d << {:a => 2, :b => 1, :c => 'b'} puts d.find({ :a => Numeric, :b => 'a' }).inspect returns {:a => 2, :b => 1, :c => 'b'} -- Posted via http://www.ruby-forum.com/.