RethinkDB - 如何过滤属性与列表/数组匹配的记录
RethinkDB - how to filter records where attribute matches a list / array
RethinkDB
我想获取所有具有特定 field/attribute 匹配 3 个不同可能值之一的记录。
在下面的示例中,我想查看 status
等于 'Ready'、'Active' 或 'Something else'[ 的所有记录=25=]
我希望能够做这样的事情:
r.db('db').table('table').filter(
function (rec) {
return [ 'Ready', 'Active', 'Something else' ].includes( rec('status') );
}
);
这没有错误,也没有 return 我所有状态等于 'Ready'、'Active' 或 'Something else' 的记录(它 return没有结果)。
如何查找其字段与数组中任一值匹配的所有记录?
好的,我在阅读了更多关于 ReQL 查询语言的内容后明白了这一点。
我们那里没有 JS 函数,而是 ReQL,这基本上意味着您可以使用 .match()
和正则表达式。
匹配列表的正则表达式只是用“|”分隔匹配的字符串。
所以上面例子的解法是
r.db('db').table('table').filter(
function (rec) {
return rec('status').match( "Ready|Active|Something else" );
}
);
另一个更接近您最初预感的解决方案是使用 .contains(...)
:
r.db('db').table('table').filter(
function (rec) {
return r.expr(['Ready', 'Active', 'Something else']).contains( rec('status'));
}
);
这可能比使用正则表达式更有效。
RethinkDB
我想获取所有具有特定 field/attribute 匹配 3 个不同可能值之一的记录。
在下面的示例中,我想查看 status
等于 'Ready'、'Active' 或 'Something else'[ 的所有记录=25=]
我希望能够做这样的事情:
r.db('db').table('table').filter(
function (rec) {
return [ 'Ready', 'Active', 'Something else' ].includes( rec('status') );
}
);
这没有错误,也没有 return 我所有状态等于 'Ready'、'Active' 或 'Something else' 的记录(它 return没有结果)。
如何查找其字段与数组中任一值匹配的所有记录?
好的,我在阅读了更多关于 ReQL 查询语言的内容后明白了这一点。
我们那里没有 JS 函数,而是 ReQL,这基本上意味着您可以使用 .match()
和正则表达式。
匹配列表的正则表达式只是用“|”分隔匹配的字符串。
所以上面例子的解法是
r.db('db').table('table').filter(
function (rec) {
return rec('status').match( "Ready|Active|Something else" );
}
);
另一个更接近您最初预感的解决方案是使用 .contains(...)
:
r.db('db').table('table').filter(
function (rec) {
return r.expr(['Ready', 'Active', 'Something else']).contains( rec('status'));
}
);
这可能比使用正则表达式更有效。