0

重新思考数据库

我想获取具有与 3 个不同可能值之一匹配的特定字段/属性的所有记录。

在下面的示例中,我想查看所有status等于 'Ready'、'Active' 或 'Something else' 的记录

我希望能够做这样的事情:

r.db('db').table('table').filter(

  function (rec) { 
    return [ 'Ready', 'Active', 'Something else' ].includes( rec('status') );   
  }

);

这不会出错,也不会返回所有状态等于“就绪”、“活动”或“其他”的记录(它不返回任何结果)。

如何查找具有与数组中任何一个值匹配的字段的所有记录?

4

2 回答 2

2

另一个更接近您最初预感的解决方案是使用.contains(...)

r.db('db').table('table').filter(
  function (rec) { 
    return r.expr(['Ready', 'Active', 'Something else']).contains( rec('status'));   
  }
);

这可能比使用正则表达式更有效。

于 2016-09-09T17:53:48.453 回答
1

好的,在阅读了有关ReQL查询语言的更多信息后,我明白了这一点。

我们那里没有 JS 函数,而是 ReQL,这基本上意味着您可以使用.match()正则表达式。
匹配列表的正则表达式只是用“|”分隔匹配的字符串。

所以上面例子的解决方案是

r.db('db').table('table').filter(

  function (rec) { 
    return rec('status').match( "Ready|Active|Something else" );   
  }

);
于 2016-09-09T09:05:40.307 回答