我说我有下面的图表
(:A) -> (:B {name:'B-1'}) -> (:C) -> (:D)
-> (:X) -> (:B {name:'B-2'} -> (:Z)
现在A、B、C等是具有不同节点属性的节点类型。即,两个B节点具有具有不同值的名称属性以区分这两个节点。现在说我想找出从A到Z的路径,我可以做
MATCH p1 = ((:A)-[*]-(:Z))
return p1
但是我也想使用相同的查询返回两个B节点,或者有没有一种方法可以后处理p1来提取neo4j中的两个B节点?
2条答案
按热度按时间ztmd8pv51#
您可以按如下方式扩展返还范围:
或者,如果你只想要名字:
ddhy6vgd2#
您会发现将属性传播到下游节点或添加新关系会有帮助吗?您所说的“后处理”可能涉及冗余,这是有代价的(额外的存储/内存),但加速的遍历可以证明该代价是合理的。加速来自于缩短遍历,因为1)存在新的关系,或者2)因为您在下游点开始遍历。在(:A)中是否有可以放置在(:Z)或其他中间节点中的属性?A和Z之间的关系明智吗?在整个图中进行增强的一次性工作将使每个单独的查询变得非常快。您也可以使用此策略来管理起源;现在跟踪A和Z是如何相关的很复杂。