使用 py2neo 获取具有二阶连接的节点?
Using py2neo to get nodes with second order connections?
如何将 py2neo RelationshipMatcher
或类似的方法用于 return 所有与原始节点具有二阶连接的节点?[=20=]
我可以使用以下 Cypher 查询:
MATCH (u)-[:has]-()-[:validates]-(result)
WHERE u.UserName = "Dave"
RETURN result
下面的图表会给我路线 A、B 和 C
Graph image
但是,将 db.evaluate(query
(如下所示)与相同的查询一起使用仅 return 第一个匹配节点(即 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")
像下面这样的东西会 return 第一顺序节点连接到我的用户(即 Condition1
、Condition2
)。
如何修改此代码以传送匹配的二阶节点?
u = db.nodes.match("User", UserName=username).first()
matcher = RelationshipMatcher(db)
nodes = matcher.match((u, None), "has")
找到
result = db.run(query).data()
而不是 result = db.evaluate(query)
这个returns匹配节点的字典
如何将 py2neo RelationshipMatcher
或类似的方法用于 return 所有与原始节点具有二阶连接的节点?[=20=]
我可以使用以下 Cypher 查询:
MATCH (u)-[:has]-()-[:validates]-(result)
WHERE u.UserName = "Dave"
RETURN result
下面的图表会给我路线 A、B 和 C
Graph image
但是,将 db.evaluate(query
(如下所示)与相同的查询一起使用仅 return 第一个匹配节点(即 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")
像下面这样的东西会 return 第一顺序节点连接到我的用户(即 Condition1
、Condition2
)。
如何修改此代码以传送匹配的二阶节点?
u = db.nodes.match("User", UserName=username).first()
matcher = RelationshipMatcher(db)
nodes = matcher.match((u, None), "has")
找到
result = db.run(query).data()
而不是 result = db.evaluate(query)
这个returns匹配节点的字典