使用py2neo获得具有二阶连接的节点?

2024-05-06 07:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用py2neo ^{}或类似方法将具有二阶连接的所有节点返回到原始节点

我可以使用以下密码查询:

MATCH (u)-[:has]-()-[:validates]-(result)
WHERE u.UserName = "Dave" 
RETURN result

在下面的图表中,我可以看到路线A,B和C


Graph image

但是,对同一查询使用db.evaluate(query(如下)只返回第一个匹配节点(即Route A

from py2neo import Graph, Node, Relationship, NodeMatcher, RelationshipMatcher

def get_routes(username):
    query = "MATCH (u)-[:has]-()-[:validates]-(result) WHERE u.UserName = '"'{}'"' RETURN result".format(username)
    result = db.evaluate(query)

db = Graph("bolt://X.X.X.X:7687", username = "neo4j", password = "password")
get_routes("Dave")

下面的内容将返回连接到我的用户的一阶节点(即Condition1Condition2

如何修改此代码以交付匹配的二阶节点

u = db.nodes.match("User", UserName=username).first()
matcher = RelationshipMatcher(db)
nodes = matcher.match((u, None), "has")

Tags: dbreturn节点matchusernameresultwherequery