我正在尝试这样做:
r.table(table).filter(
function (doc) {
return r.expr(array)
.contains(doc("name"));
}
)
用golang写的是
rethink.Table(table).GetAllByIndex(index, value).Filter(func(row rethink.Term) interface {}{
return rethink.Expr([]string{}).Contains(row.Field("type"))
})
我不确定,但是就像rethink.Expr被忽略了。
那是第一个问题。
第二个问题是下一个。如果我有这样写的查询:
query := rethink.Table(table).GetAllByIndex(index, value)
然后尝试下一步:
if some_condition {
q.Filter(some_filter)
}
if some_other_condition {
q.Filter(some_other_filter)
}
当我打印出
q.String()
时,我只有第一部分,其他所有内容都被忽略rethink.Table(table).GetAllByIndex(index, value)
最佳答案
由于Filter方法返回一个新的Term,其中将包含上一项的表达式,因此您需要将结果重新设置为q
。
if some_condition {
q = q.Filter(some_filter)
}
if some_other_condition {
q = q.Filter(some_other_filter)
}
关于go - 为什么.Filter(func())中的Contains在gorethink中不起作用并且部分查询被忽略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43995683/