2017-06-08 191 views
2

我有兩個數組只包含我想匹配的字符串。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但這不起作用。

關於如何使這項工作的任何IDE?

回答

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()) 
+0

謝謝您第二個解決方案也是我最終做的。但我想我會改變使用添加,而不是+的原因,感覺就像是正確的解決方案。 –