这是示例图的屏幕截图:
如果我的查询如下:
MATCH (f:Node {key:'someid'})
CALL apoc.path.expand(f, 'RELATIONSHIPS', 'FINAL_NODE',-1,-1) yield path as p
RETURN p
在使用浏览器并查看表视图时,数据看起来像是数组中的奇异路径一样返回。数组中的数组。
[
[
{red},
{relationship},
{teal},
{relationship},
{red},
{relationship},
{blue},
{relationship},
{green}
],
[
{red},
{relationship},
{teal},
{relationship},
{red},
{relationship},
{blue},
{relationship},
{green}
],
etc
]
{}是每个节点和关系的属性。
如果我使用
返回节点(p)
它只是给我所有项目的列表,没有深度,如果我尝试将大小或长度与路径一起使用,在这种情况下它们都是5,而没有给我单独的节点。
我真正想要的是能够重新创建图的级别,因此理想情况下将像这样返回数据:
[
[
{red}
],[
{teal},
{teal},
{teal},
{teal},
{teal},
{teal}
],[
{red}
],[
{blue},
{blue},
{blue},
{blue},
{blue},
{blue},
{blue}
],[
{green}
]
]
使用扩展功能是否可行?还是我需要弄清楚如何通过cypher对立式图案进行相同的处理?
答案 0 :(得分:1)
应该有可能提出Cypher代码,但是这会花费一些精力并且可能非常复杂。
只考虑以下结果可能会更好:
MATCH p=(f:Red {key:'someid'}<-[:TO_ACTIVE_DRAFT|TO_ATL*]-()-[:SOURCE_FOR_INC]->(g:Green)
RETURN p
并使用某种外部编程语言生成所需的数据。 大多数时候,道路是人们想要的,因此Cypher着眼于此。
答案 1 :(得分:0)
此查询(带有一些假定的节点标签)不使用APOC过程,可能对您有用:
MATCH (f:Node {key:'someid'})
<-[:TO_ACTIVE_DRAFT]-(t:Teal)
<-[:ATL_TO_DRAFT]-(r:Red)
<-[:TO_ACTIVE_DRAFT]-(b:Blue)
-[:SOURCE_FOR_INC]->(g:Green)
RETURN COLLECT(DISTINCT f), COLLECT(DISTINCT t), COLLECT(DISTINCT r), COLLECT(DISTINCT b), COLLECT(DISTINCT g)