在 RethinkDB 中设置成员资格测试

Set membership test in RethinkDB

简单问题:如何根据集合成员过滤行?例如,我想知道 r.row('color') 是否在集合 ['red'、'green'、'blue'].

我可以将其写成一组 "or" 表达式,但这似乎效率低下,尤其是当集合很大时。

这是您可以做到的一种方法。 (注意:这就是您在 javascript 中构建查询的方式。根据您的编程语言,它可能会略有不同)。

r.db('YOUR_DB').table('YOUR_TABLE').filter(
  function(doc) {
    return r.expr(['red', 'green', 'blue']).contains(doc('color'))
  }
)

这是一个方便的指南,向您展示如何在 ReQL 中构建常见的 SQL 查询:

https://rethinkdb.com/docs/sql-to-reql/javascript/

在这种情况下,我们讨论的是 SQL 中的 IN 子句。