在涉及非存在字段时,Rql`或`不起作用

时间:2014-12-29 02:17:04

标签: rethinkdb

版本:1.15.2

r.db('test')
 .table('form')
 .filter(r.row('yyy').eq('aaa').or(r.row('id').eq('aaa')))
 .limit(10)

为什么此查询无法匹配idaaa但没有字段yyy

的文档

1 个答案:

答案 0 :(得分:1)

对于不存在的字段(default: false)有特殊处理,所以我想最好将查询重写为不在缺少的字段上调用.eq()。您可以先检查id

.filter(r.row('id').eq('aaa').or(r.row('yyy').eq('aaa')))

或者可以直接在缺少字段的操作上设置默认行为:

.filter(r.row('yyy').eq('aaa').default(false).or(r.row('id').eq('aaa')))

BTW:这个答案的更新。在报告了RethinkDB的文档错误之后,这已在故障排除指南中提及:http://www.rethinkdb.com/docs/troubleshooting/#filters-with-or-return-incorrect/unexpected-r