There are a couple ways to mimic the SQL “CASE WHEN” in RethinkDB.
If the rows don’t have values in some columns, in SQL you’d default these with “CASE WHEN attr IS NULL … ELSE END”. To fix these, you can use map / merge:
r.db('test').table('users')
.map(
(doc) => { return r.expr(
{
first_name: '',
last_name: ''
}
).merge(doc) }
)
If you want to key off different values, you can use the ‘branch’ function, like so:
r.db('test')
.table('users')
.map(
(doc) => {
return {
first_name:
r.branch(
doc('first_name').eq('test'),
1,
2)
}
}
)