Graph 单次查询中的Cypher遍历树
假设您有以下布局。一个称为“组”的根节点,可通过以下方式找到:Graph 单次查询中的Cypher遍历树,graph,neo4j,cypher,Graph,Neo4j,Cypher,假设您有以下布局。一个称为“组”的根节点,可通过以下方式找到: MATCH (g: Group {key: $groupKey}) RETURN g; 以及该组拥有的一系列消息: MATCH (g: Group {key: $groupKey})-[r: Owns]->(m: Message) RETURN m; 并且每条消息可以有许多回复,也可以表示为消息 MATCH (m: Message {key: $messageKey})-[r: Owns]->(reply: Mess
MATCH (g: Group {key: $groupKey}) RETURN g;
以及该组拥有的一系列消息:
MATCH (g: Group {key: $groupKey})-[r: Owns]->(m: Message) RETURN m;
并且每条消息可以有许多回复,也可以表示为消息
MATCH (m: Message {key: $messageKey})-[r: Owns]->(reply: Message) RETURN reply;
问题是如何在单个查询中遍历g以检索所有消息及其回复的图形。假设不存在循环路径。此查询将返回以
g
为根的树中的每条消息
MATCH (g:Group {key: $groupKey})-[:Owns*]->(m:Message)
RETURN g, COLLECT(DISTINCT m) AS messages;
此查询将返回以g
为根的树中的每条消息
MATCH (g:Group {key: $groupKey})-[:Owns*]->(m:Message)
RETURN g, COLLECT(DISTINCT m) AS messages;