Rethinkdb字符串匹配两个数组

时间:2017-06-08 05:10:57

标签: arrays rethinkdb

我有两个数组只包含我想要匹配的字符串。

我不能使用contains或setIntersection,因为我希望不区分大小写的匹配也能正常工作。

我尝试了很多不同的方法,但我还没有找到可行的解决方案。我认为这是迄今为止我提出的最好的,但它不起作用:

r.db( 'my_db' ).table( 'Table' ).hasFields( 'tags' ).filter( function( row ) { 
  return row( 'tags' ).filter( function( t ) {
    return r.expr( [ 'Foo', 'Bar', 'FooBar' ] ).filter( function( m ) {
      return t.match( '(?i)^' + m + '$' );
    } ).count().gt( 0 );
  } ).count().gt( 0 );
} );

tags列是一个字符串数组。但我认为问题是m不是一个字符串所以我不能用它来匹配。但是如何将其转换为字符串?我尝试过coerceTo,但这不起作用。

关于如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:0)

您应该可以使用.add()代替+来查询您的查询,例如:

r.expr('(?i)^').add(m).add('$')

您也可以尝试这样的事情:

r.db('my_db').table('Table').hasFields('tags').filter(row =>
  row('tags').map(x => x.upcase()).setIntersect(['FOO', 'BAR', 'FOOBAR']).isEmpty().not())