我正在尝试在消息图中跟踪消息。例如,节点A向节点B发送消息,节点B向节点C发送消息(依此类推),如何在Cypher中设计一个查询,该查询将保持调用下一个节点直到到达终端节点。
A - > B - > C - > D - > E - > ˚F
开始搜索是A,返回一个包含B,C,D,E,F的列表(在经典的neo4j图形可视化中,这些节点是连接的,因为B向C发送消息,依此类推至F.
我的代码是
MATCH p=(a { address: "A" })-[r]->(b)
RETURN *
这只返回A和节点A发送的消息。如何修改它以完成我正在寻找的递归调用。
注意:我已经提到了this帖子并浏览了neo4j手册。但是,我仍然没有得到它(或者找不到答案,或者我可能没有得到它#39;)。任何帮助真的很感激!
答案 0 :(得分:1)
这个电话:
MATCH p=(a { address: "A" })-[r*]->(b)
RETURN b;
将根据您的需要与A
匹配尽可能多的跃点,因为关系上有星号。 b
变量最终将成为a
下游的所有内容。
我不确定你的意思是“调用下一个节点”。这将只返回该节点后面的数据。你实际上并不需要使用cypher和neo4j来进行递归。相反,你应该只问cypher你想要什么数据,它会为你得到它。如果你在非图形数据库上实现这些东西,你可以使用递归作为深度优先或广度优先搜索的一部分,但它对于图形数据库来说根本不是必需的。查询语言为您处理所有这些。