在Neo4j中查询各基金最长投资依赖链的技术实现问题
解决基金最长投资依赖链查询问题
图模式说明
节点与关系的结构如下:
| 节点 | 关系 |
|---|---|
(:Fund {name: "Fund", indexes: [], constraints: []}) | [:INVESTS_IN {name: "INVESTS_IN"}] |
查询需求
针对每个基金,查询其最长的单一依赖链,返回该链包含的所有节点及关系。
现有Cypher语句
当前编写的语句能返回所有投资路径的节点和关系,但无法仅返回最长路径:
MATCH p = (f:Fund {id: 2163440 })-[:INVESTS_IN*]->(d) WITH f, p, length(p) AS depth ORDER BY depth DESC WITH f, collect(p)[0] AS longestPath RETURN f.name AS Fund, nodes(longestPath) AS Nodes, relationships(longestPath) AS Relationships
结果对比
现有结果会返回多条投资路径,而期望结果仅保留长度最长的那条依赖链(示例中左侧为现有结果,右侧为期望结果)。
内容的提问来源于stack exchange,提问作者filippo
相关产品推荐
相关产品推荐

