我有一个看起来像这样的 Neo4j 图
它具有使用 CHILD_OF 关系的关系层次结构。
所有绿色节点(见)都是书籍的权利。
父母可以看到的所有书籍也对孩子可见,但反过来不行。
此外,孩子有可能在不涉及父母的情况下直接看书。
这里的问题是找到从孩子到书籍的最短路径。
在这种情况下,C1 有 2 条路径(通过权利)到 Book1,但只有 1 条到 Book2。 Book3 没有。
Neo4j Cypher 查询应仅返回从 C1 到所有书籍的最短路径。
我尝试使用 Neo4j shortestPath 函数,但它不起作用。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]-(b))
RETURN p
此查询的输出返回:
所需的最终图表应如下所示:
答案 0 :(得分:0)
您需要将关系设为从 Child 到 Book 的方向。这是因为当你输入 * 时,它会包含一个你不需要的从 book3 到 library 的路径。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]->(b))
RETURN p