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获取完整的路径详细信息,包括所有节点以及连接它们的关系?
答案 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)