cypher查找哪些节点与一组节点有关系

时间:2015-11-17 16:42:07

标签: neo4j cypher

从上一个查询中我检索了一个节点列表,例如节点9,10,18,12,20表示汽车位置。请注意,列表可以是动态的,我可以获得更多或更少的节点

从我想知道的节点列表中检索哪个节点与谁相关。 (或谁是谁的朋友)(node)-[:TO]-(node)来自给定列表

E.g。从模型中,我们可以看到节点9和10是(朋友)相关的,18和12也是如此,20个没有列表中的朋友。

enter image description here

所以最后我想得到这个:

enter image description here

在Row结果中(在neo4j中)应显示

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

不同行中的每个朋友关系。

有什么建议吗?

提前谢谢

1 个答案:

答案 0 :(得分: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

但也许您也可以通过在节点中包含另一种关系来以某种方式将此包含在您之前的查询中?这取决于您之前的查询的样子。