我正在尝试这样做:

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/

10-12 20:30