2015-10-20 5 views
0

Я пытаюсь с этим запросомNeo4j матч значение массива с узлом собственности

MATCH(u:User) WHERE ANY(name IN ['ACB','xYz'] WHERE u.first_name =~ "(?i).*name.*") RETURN u 

он рассматривает (?i).*name.* в качестве статического текста вместо динамического значения из name IN ['ACB','xYz'].

+0

Да, регулярное выражение - статический текст. Но в вашем примере, я думаю, вы можете добавить «['ACB', 'xYz']" непосредственно в регулярное выражение, здесь он не динамический, верно? – logisima

+0

@logisima также динамичный. входящий в запрос. Прямо сейчас, чтобы проделать работу, я прошел весь массив и добавил регулярное выражение с каждым элементом ** ex. search_param = search_param.map (function (ele) { return '. * (? i)' + ele + '. *' }); ** , но я не хочу пересекать массив. –

ответ

0

Вы можете собрать выражение регулярного выражения, используя конкатенацию строк. Этот случай, однако, нуждается в некотором toString:

MATCH(u:User) WHERE ANY(name IN ['ACB','xYz'] 
    WHERE u.first_name =~ toString("(?i).*" +name +".*")) 
RETURN u 
Смежные вопросы