假设我在 Neo4j 中有一个包含 5 个节点的集合,使得集合中的每个节点都连接到集合中的至少一个其他节点。我想从 Neo4j 中提取由节点集合及其交互形成的子图。目前,我正在使用一种非常原始的方法,该方法涉及尝试找到系统中每个节点与其他每个节点的匹配项:
MATCH p=(n)-[]->(m)
WHERE id(n) IN [3,4,5,6,7] AND id(m) IN [3,4,5,6,7]
RETURN relationships(p);
然而,这个查询既冗余又低效;它必须经历集合中节点的每个排列(例如,它将匹配节点 #3 和 #4,以及 #4 和 #3)。是否有更有效的方法来仅使用 Cypher(无 Java)获取这些节点形成的子图?
Here's an example of what I mean by "subgraph":
我希望 Cypher 返回所有标记为绿色的关系。请注意,集合中的节点不必与图表的其余部分隔离;它们仍然可以与图中的其他节点建立关系,但我希望 Cypher 仅返回绿色的关系。
我想扩展理查兹的答案,您还可以将其限制为 id 位于不同组中的节点。
MATCH (n) WHERE id(n) IN [3,4,5,6,7]
MATCH p=(n)-->(m)
WHERE id(n) < id(m) AND id(m) IN [3,4,5,6,7]
RETURN relationships(p);
结果是
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)