我的neo4j数据库中有以下记录
(:A)-[:B]->(:C)-[:D]->(:E)
(:C)-[:D]->(:E)
我想获取所有C节点以及所有关系和相关节点。如果我进行查询
Match (p:A)-[o:B]->(i:C)-[u:D]->(y:E)
Return p,o,i,u,y
如果我愿意,我会第一个匹配
Match (i:C)-[u:D]->(y:E)
Return i,u,y
我得到第二个。
但是我希望它们都在一个查询中。我该怎么办?
答案 0 :(得分:0)
最简单的方法是对查询进行UNION,并用null填充未使用的变量(因为UNION的所有密码必须具有相同的返回列
Match (p:A)-[o:B]->(i:C)-[u:D]->(y:E)
Return p,o,i,u,y
UNION
Match (i:C)-[u:D]->(y:E)
Return NULL as p, NULL as o,i,u,y
在您的示例中,第二个匹配实际上也与第一个匹配的最后一半匹配,所以也许您实际上想要更直接的东西,例如...
MATCH (c:C)
OPTIONAL MATCH (connected)
WHERE (c)-[*..20]-(connected)
RETURN c, COLLECT(connected) as connected
答案 1 :(得分:0)
您的查询似乎太具体了。如果只需要对所有:C节点,连接的节点和关系进行操作,则应该可以:
MATCH (c:C)-[r]-(n)
RETURN c, r, n