【发布时间】:2017-04-18 06:25:04
【问题描述】:
给定以下节点 B、E、F、G、H、J、K。我必须编写一个 neo4j 查询来检查这些节点是如何相互连接的。
例如,假设这是我要显示的模式。
B-H-F
|
G-J-K-E
显示此图表的查询是什么?我不想显示连接到这些节点的所有其他节点。
【问题讨论】:
给定以下节点 B、E、F、G、H、J、K。我必须编写一个 neo4j 查询来检查这些节点是如何相互连接的。
例如,假设这是我要显示的模式。
B-H-F
|
G-J-K-E
显示此图表的查询是什么?我不想显示连接到这些节点的所有其他节点。
【问题讨论】:
你需要找到每对源节点之间的路径。
确保每条路径仅包含源集中包含的那些节点。
你可以用密码来做到这一点:
WITH {GIVEN_NODES} as NDS // The source array of node IDs
UNWIND RANGE(0, size(NDS)-2) as i
UNWIND RANGE(i+1, size(NDS)-1) as j
WITH NDS,
NDS[i] as N1,
NDS[j] as N2
MATCH path = (N1)-[*]-(N2)
WHERE length(path)+1 <= size(NDS) AND
ALL(n in nodes(path) WHERE n in NDS)
RETURN path
【讨论】: