【问题标题】:Using py2neo to get nodes with second order connections?使用 py2neo 获取具有二阶连接的节点?
【发布时间】:2019-11-28 00:24:48
【问题描述】:

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

我可以使用以下 Cypher 查询:

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")

【问题讨论】:

    标签: python neo4j py2neo


    【解决方案1】:

    找到answer here

    result = db.run(query).data() 而不是result = db.evaluate(query)

    这将返回匹配节点的字典

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多