【问题标题】:Neo4j with all relations between all nodesNeo4j 与所有节点之间的所有关系
【发布时间】:2014-05-07 12:50:07
【问题描述】:

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

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

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

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

匹配 (a)-[r]-(b) 其中 id(a)=52681 AND id(b)=12345

但这似乎不是很好的设计...我只想在一个查询中完成。

另外,我倾向于把事情复杂化。

【问题讨论】:

  • 我不清楚你到底想做什么。您的标题表明您正在尝试查询整个图形结构,但您没有详细提及。你能澄清一下吗?

标签: neo4j cypher


【解决方案1】:

我认为没有一种简单/有效的方法可以做到这一点。

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

但是,如果它们都只有一个度数(并且假设没有自循环,无论如何这很容易处理),类似

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

...可能会成功,尽管以一种非常低效的方式。但是,如果您在 a 和 b 之间的路径深度 > 1 级,则显然行不通。

在这种情况下,这样的事情可能会奏效,但又很糟糕:

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

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

当您开始针对跨越整个图表并需要处理/遍历整个图表的图表提出问题时,您提出的问题类型开始有点膨胀。

因此,很可能,您提出的解决方案可能是真正解决此问题的唯一方法。

也就是说,我很想知道是否有人对此有不同的看法。

HTH,如果只是一点点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多