有三种节点类型:A,B和C.
我需要所有的A和B,只需要参与一个关系的C。
match (n)
where n:A or n:B or (n:C)-[]-()
with count(n) as countOfRels
where countOfRels > 0
return n
不知道,我知道。我不知道从哪里开始。
答案 0 :(得分:2)
有点奇怪A,B和C似乎没有关系......但是这里有你如何解决你的C问题:
MATCH (n:C)
WHERE size((n)-[]-()) = 1
RETURN n
UNION
MATCH (n:A)
RETURN n
UNION
MATCH (n:B)
RETURN n;
希望这有帮助。
此致 汤姆
答案 1 :(得分:0)
你可以用这个
match(n)
where n:A OR n:B OR (n:C)-[r]-()
with count(r) as countOfRels
where countOfRels > 0
return n
希望这有帮助。
答案 2 :(得分:0)
您可以MATCH (a)--() WHERE NOT ()--(a)--()
匹配“只有一个关系的节点”。之后,您可以使用UNION或COLLECT()+ UNWIND将单独的查询组合到一行结果集中。
// using Union
MATCH (n:C)--()
WHERE NOT ()--(n)--()
RETURN n
UNION
MATCH (n:A)
RETURN n
UNION
MATCH (n:B)
RETURN n;
// Using collect
OPTIONAL MATCH (a:A)
OPTIONAL MATCH (b:B)
OPTIONAL MATCH (c:C)--() WHERE NOT ()--(c)--()
WITH COLLECT(a)+COLLECT(b)+COLLECT(c) as nodez
UNWIND nodez as n
RETURN DISTINCT n