如何仅返回与Cypher查询中的所有关系匹配的节点?

时间:2015-05-21 23:29:04

标签: neo4j cypher

假设我有以下关系,如何返回连接到345(节点1)的所有节点,但忽略具有某些节点的节点其中,但不是全部(节点23)。

1--4
1--5
1--6

2--4

3--5
3--6

2 个答案:

答案 0 :(得分:1)

我假设您的问题有拼写错误,您打算询问如何返回连接到所有这些节点的所有节点:4,5和6.

这是一个明确仅适用于4,5和6的查询。

MATCH (n)--({id: 4}), (n)--({id: 5}), (n)--({id: 6})
RETURN n;

这是一个可用于任何ID列表的查询(在此示例中:7,8,9,10):

WITH [7, 8, 9, 10] AS list
MATCH (n)--(x)
WITH list, LENGTH(list) AS lth, n, COLLECT(DISTINCT x.id) AS cx
WHERE (LENGTH(cx) >= lth) AND ALL (i IN list WHERE i IN cx)
RETURN n;

答案 1 :(得分:0)

您可以使用UNION子句:http://neo4j.com/docs/stable/query-union.html#union-combine-two-queries-and-remove-duplicates

MATCH (n:Label)
WHERE (n)--(n4)
AND (n)--(n5)
AND (n)--(n6)
RETURN distinct(n)
MATCH (n)
WHERE (n)--(n4)
OR (n)--(n5)
RETURN distinct(n)