Revision 316338346133 () - Diff

Link to this snippet: https://friendpaste.com/6VWDrZU07ZXK8iwyv7XtNp
Embed:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
require 'rubygems'
require 'relaxdb'

RelaxDB.configure :host => "localhost", :port => 5984, :logger => Logger.new(STDOUT)
RelaxDB.delete_db "test_user_age" rescue "ok"
RelaxDB.use_db "test_user_age"

class User < RelaxDB::Document
property :age
end

10.times do |i|
User.new(:age => i).save
end

map = <<FUNC
function (doc) {
if (doc.class === "User") {
emit(doc.age, 1);
}
}
FUNC

reduce = <<FUNC
function (keys, vals) {
return sum(vals);
}
FUNC

RelaxDB::DesignDocument.get("User").add_map_view("by_age", map).
add_reduce_view("by_age", reduce).save
res = RelaxDB.view("User", "by_age") { |q| q.startkey(nil).endkey(2) }
puts "2 and under: #{RelaxDB.reduce_result(res)}" # prints 2

res = RelaxDB.view("User", "by_age") { |q| q.startkey(3).endkey({}) }
puts "3 and older: #{RelaxDB.reduce_result(res)}" # prints 7