如何使用neo4j-python在未知长度的路径中获取所有跃点?

时间:2017-02-25 12:22:57

标签: python neo4j

MATCH (u:User {name:{user}}), (target:Group {name: {group}}), p=shortestPath((u)-[*]->(target)) RETURN p

当我在Neo4j网页用户界面中运行上述查询时,会显示结果路径的下降图。

但是,当我使用neo4j-python驱动程序运行相同的查询时,只返回信息有限的Path个对象

<Path start=479557 end=404582 size=1>

如何使用Cypher和python获取完整的路径详细信息,包括所有节点以及连接它们的关系?

3 个答案:

答案 0 :(得分:5)

取决于您希望如何返回数据,但您可以尝试这样的事情

MATCH (u:User {name:{user}}), (target:Group {name: {group}}),
p=shortestPath((u)-[*]->(target)) RETURN nodes(p),relationships(p)

答案 1 :(得分:2)

感谢大家的帮助!作为参考,这里是我的完整示例,它将路径转换为人类可读的字符串,用于控制台或电子邮件输出。

<!DOCTYPE html>
<html>
  <head>
    <title>Keanu</title>
    <link href="CSS/Main.css" rel="stylesheet" type="text/css">
  </head>
  <body>
    <header>
    <nav>
      <ul>
    <li><a href="Index.html">Home</a></li>
    <li><a href="About Me.html">About Me</a></li>
    <li><a href="Portfolio.html">Portfolio</a></li>
    <li><a href="Testimonial.html">Testimonial</a></li>
    <li><a href="Contact.html">Contact</a></li>
  </ul>
  </nav>
  <h1>My Personal Website</h1>
</header>
<footer>

</footer>
  </body>
</html>

这是对Bloodhound项目生成的图表的查询,该项目构建Active Directory结构的图形。它对域管理员,系统架构师,网络防御者和测试者非常有用。

答案 2 :(得分:0)

https://neo4j.com/docs/api/python-driver/4.0/api.html#path

https://neo4j.com/docs/api/python-driver/4.0/api.html#relationship

from neo4j import (
    Path,
    Relationship,
)

...

result = session.run("MATCH (u:User {name: $user}), (target:Group {name: $group}), p=shortestPath((u)-[*]->(target)) RETURN p", user="example", name="example").single()

record = result.single()
session.close()

path = record["p"]

assert isinstance(path, Path)

for relationship in path:
   assert isinstance(relationship, Relationship)