【发布时间】:2015-04-10 23:02:50
【问题描述】:
假设我在 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)形成的子图?
这是我所说的“子图”的一个例子:
我希望 Cypher 返回所有标记为绿色的关系。请注意,集合中的节点不必与图的其余部分隔离;他们仍然可以与图中的其他节点建立关系,但我希望 Cypher 只返回绿色的关系。
【问题讨论】: