2016-06-13 1 views
1

Привет У меня есть вариант использования, где у меня есть узел с свойством, который является массивом.Neo4J - найти, если значение в свойстве массива из 2 узлов соответствует

*

Node({name:'a', colors:['red','green','blue']}) 
Node({node:'b',colors:['blue','black','red']}) 

*

Теперь я хочу, чтобы выяснить, что это соответствие значение между 2 узлами среди своих цветов property.I Шоуда быть в состоянии получить соответствующее значение так, чтобы передать его на далее в запросе на обработку.

ответ

2
MATCH (a:Node {name:'a'}) 
MATCH (b:Node {name:'b'}) 
RETURN filter(x IN a.colors WHERE x IN b.colors); 

Если вы хотите продолжить с запросом:

MATCH (a:Node {name:'a'}) 
MATCH (b:Node {name:'b'}) 
WITH filter(x IN a.colors WHERE x IN b.colors) AS v 
UNWIND v AS matchingVals 
MATCH ... 
... 
+0

Спасибо за ваше предложение. Как упоминалось, как захватить это значение соответствия в переменной и перейти дальше к запросу. Предположим, что в зависимости от этого значения соответствия я хочу что-то сделать. –

+0

Я отредактировал свой ответ, чтобы показать, как вы переносите значение. –

+0

Если вы хотите, чтобы значение было в списке, не используйте UNWIND. UNWIND расширяет список в строках. –