38 lines
933 B
JavaScript
38 lines
933 B
JavaScript
|
|
t = db.group5;
|
|
t.drop();
|
|
|
|
// each group has groupnum+1 5 users
|
|
for (var group = 0; group < 10; group++) {
|
|
for (var i = 0; i < 5 + group; i++) {
|
|
t.save({group: "group" + group, user: i});
|
|
}
|
|
}
|
|
|
|
function c(group) {
|
|
return t.group({
|
|
key: {group: 1},
|
|
q: {group: "group" + group},
|
|
initial: {users: {}},
|
|
reduce: function(obj, prev) {
|
|
prev.users[obj.user] = true; // add this user to the hash
|
|
},
|
|
finalize: function(x) {
|
|
var count = 0;
|
|
for (var key in x.users) {
|
|
count++;
|
|
}
|
|
|
|
// replace user obj with count
|
|
// count add new field and keep users
|
|
x.users = count;
|
|
return x;
|
|
}
|
|
})[0]; // returns array
|
|
}
|
|
|
|
assert.eq("group0", c(0).group, "g0");
|
|
assert.eq(5, c(0).users, "g0 a");
|
|
assert.eq("group5", c(5).group, "g5");
|
|
assert.eq(10, c(5).users, "g5 a");
|