【发布时间】:2021-04-26 15:25:19
【问题描述】:
假设图中有两种关系::A 和 :B。有像(n1)-[:A]->(n2)->[:B]->(n3)->[:A]->(n4)->[:B]->(n5)->... 这样的模式。在这里,我只展示了这种“:A”模式的 2 次重复,然后是 :B”模式,但它可以重复到任意深度。查询类似“从节点 X 开始,然后尽可能遵循此 A+B 模式,然后获取结果节点 Y”可能会很有趣。
在Gremlin 中,可以使用repeat 步骤来实现这样的查询。
在 Cypher 中,有可变长度模式 https://neo4j.com/docs/cypher-manual/current/syntax/patterns/#cypher-pattern-varlength ,因此我们可以为简单的重复模式编写类似 (x)-[:A*]->(y) 的内容,我们只需重复一跳。
但是我们可以对更复杂的模式(比如我描述的 A+B 模式)做同样的事情吗?
我在Repetitive pattern of relationships in cypher 找到了他们推荐使用程序的地方,但它不是纯 Cypher(它是 Neo4J 的非标准扩展,在其他实现 Cypher 的系统中不可用)。
【问题讨论】: