版本:1.15.2
r.db('test')
.table('form')
.filter(r.row('yyy').eq('aaa').or(r.row('id').eq('aaa')))
.limit(10)
为什么此查询无法匹配id
为aaa
但没有字段yyy
答案 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