我们如何修改密码查询,以便它可以为查询提供所有连接的图形(表示直接或间接相互连接的节点和关系集)。
OR
我可以根据我的要求使用遍历框架吗?
用例是: 我需要从neo4j获取所有连接的图形并将它们的信息存储为"集群"在其他数据库中。 1组连通图= 1个集群。 我需要分离连接的图形,然后存储节点/关系的一些属性的聚合,并将其存储在其他数据库中。
我使用REST与neo4j db进行交互。
答案 0 :(得分:2)
虽然不会很快。
Java中的专用算法可以更快地收集数据。
MATCH (n)
WITH COLLECT(n) as nodes
RETURN REDUCE(graphs = [], n in nodes |
case when
ANY (g in graphs WHERE shortestPath((n)-[*]-(head(g)))
then graphs
else graphs + [[p in (n)-[*0..]-() | nodes(p)[length(p)-1]]]
end ))
答案 1 :(得分:2)
@michael,我已经修改了一下你的查询。现在它适用于我的数据。 我发布的变体每个连接组件只保留一个元素。 如果一个人对组件的实际成员不感兴趣但仍希望能够检索每个组件的成员,这很方便。
@manish,我知道现在已经很晚了,但是,也许,您可以将组件代表存储在新数据库中,而不是所有成员中。
MATCH (n)
WITH COLLECT(n) as nodes
RETURN REDUCE(graphs = [], n in nodes |
case when
ANY (g in graphs WHERE shortestPath( (n)-[*]-(g) ) )
then graphs
else graphs + [n]
end )