Neo4j与所有节点之间的所有关系

时间:2014-05-07 12:50:08

标签: neo4j cypher

我正在将一个密码查询解析为.gexf(xml)文件。在Neo4j admin gui中输入此查询将返回所有节点及其互连关系(所有b节点之间的关系)

START a = node(52681)MATCH(a) - [r] - (b)RETURN a,r,b

neo4j webgui似乎使它自己的查询,因为它绘制了b节点之间的所有关系,而不仅仅是a和b节点之间的关系。 JSON响应不包含我可以使用b节点之间的关系解析xml文件的数据。

到目前为止,我已通过对每个b节点进行单独查询来解决此问题:

MATCH(a) - [r] - (b)WHERE id(a)= 52681 AND id(b)= 12345

但这看起来并不是很好的设计......我想在一个查询中完成这项工作。

另外,我倾向于过于复杂化。

1 个答案:

答案 0 :(得分:0)

我认为这不是一种简单有效的方法。

考虑到每对节点之间的路径大小可能是变化的,因此像(a) - [r] - (b)这样的东西只能得到你想要的结果,如果a和b都在一度之外

然而,如果他们只有一度的距离(假设没有自我循环,这很容易就可以照顾),像

MATCH (a)-[r]-(b) RETURN a, r, b
......虽然处于一种非常低效的方式,但很可能会成功。但是,如果a和b之间的路径是> 1级深,显然不会起作用。

在这种情况下,这样的事情可能会起作用,但又是可怕的:

MATCH (a)-[r:*]-(b) RETURN a, r, b

...但如果您的路径深度超过几个级别,那么......哎哟。

当您开始询问图表中的问题时,该图表会跨越整个图表并需要处理/遍历整个图表,您提出的问题类型开始有点夸张。

所以,很可能,你提出的解决方案可能是真正解决这个问题的唯一方法。

那就是说,我很想知道是否有其他人对此有不同看法。

HTH,如果只是一点点。