2015-11-17 5 views
1

Из предыдущего запроса я получил список узлов, например. узлы 9,10,18,12,20, которые указывают положение автомобиля. Обратите внимание, что список может быть динамическим, я могу получить больше или меньше узловcypher найти, какие узлы имеют отношение к набору узлов

Из списка узлов, которые я хотел бы узнать и получить, какой узел связан с кем. (или кто является другом) (node)-[:TO]-(node) Из данного списка

E.g. из модели мы видим, что узлы 9 и 10 (друзья) связаны друг с другом, 18 и 12 тоже, а у 20 нет друзей из списка.

enter image description here

Так что в конце концов я хотел бы получить это:

enter image description here

И в результате Роу (в Neo4j) должен показывать

[9, 10], 
[18, 12], 
[20] 

каждого друга соотношение в другой строке.

Любые предложения?

Спасибо заранее

ответ

1

Вы можете collect узлы в вашем предыдущем запросе, а затем UNWIND их и MATCH их на себя.

MATCH (n:Label) 
// your filter here 
WHERE ... 
WITH collect(DISTINCT n) AS my_nodes 
// unwind twice to match nodes onto themselves 
UNWIND my_nodes AS x 
UNWIND my_nodes AS y 
MATCH (x)-[:TO]->(y) 
WHERE x <> y 
RETURN x.value, y.value 

Но, возможно, вы также можете включить это в свой предыдущий запрос каким-либо образом, включив другое отношение к узлам? Это зависит от того, как выглядит ваш предыдущий запрос.

+0

это работает, мой запрос - это простой, матч (c: Car) - [: IS_ON] -> (l: Location). Есть ли способ вернуть в том же запросе узлы из списка, у которых нет друзей. И получим такие результаты [9,10], [18,12], [20] – andreahg

Смежные вопросы