Neo4j cyper查询:如何跟踪
我正在尝试学习neo4j,所以我只是拿了一个旅游应用程序的用例来学习,但我不确定解决它的最佳方法。任何帮助都将不胜感激 提前谢谢 请考虑一个用例,我必须乘火车从一个地方(<强>放置< < /强>)到其他(<强>地点C < /强>),但这两个地方之间没有直接联系。所以我们必须在B地点换车 两个地方通过一个关系连接起来。参考图像中的绿色节点 然后,如果两个位置之间存在连接关系,则将存在输出关系,即通过连接到两个节点的公共列车,这意味着它们是如何连接到图像中的红色节点的 我的问题是我们怎么知道我们必须从b站换站 我的理解是:Neo4j cyper查询:如何跟踪,neo4j,Neo4j,我正在尝试学习neo4j,所以我只是拿了一个旅游应用程序的用例来学习,但我不确定解决它的最佳方法。任何帮助都将不胜感激 提前谢谢 请考虑一个用例,我必须乘火车从一个地方(放置< < /强>)到其他(地点C < /强>),但这两个地方之间没有直接联系。所以我们必须在B地点换车 两个地方通过一个关系连接起来。参考图像中的绿色节点 然后,如果两个位置之间存在连接关系,则将存在输出关系,即通过连接到两个节点的公共列车,这意味着它们是如何连接到图像中的红色节点的 我的问题是我们怎么知道我们必须从b站换站
match(p:place{name:“heidelberg”})-[:CONNECTED_VIA]->(q)您需要在:CONNECTED_VIA match中使用可变长度关系,然后获取路径中的:place节点。使用上界通常是个好主意,不管在图形中有什么意义 然后,我们可以在路径中的节点上使用过滤器,只保留以下节点:放置节点
match path = (p:place{name:"heidelberg"})-[:CONNECTED_VIA*..4]-(t:place{name:"frankfurt"})
return path, [node in nodes(path)[1..-1] where node:Place] as connectionPlaces
如果您只对最短路径感兴趣,您可能需要查看最短路径
最后要注意的一点是……在确定两个位置是否连接时,如果它们连接时只需要一个true或false,则可以使用EXISTS()函数返回是否存在这样的模式:
match (start:place{name:"heidelberg"}), (end:place{name:"frankfurt"})
return exists((start)-[:IS_CONNECTED*..5]->(end))
非常感谢你!!这就是我要找的