【问题标题】:Neo4J common neighbors of a set nodes in a pathNeo4J 路径中一组节点的公共邻居
【发布时间】:2019-12-06 12:24:58
【问题描述】:

我的网络由节点组成,关系是一个数字。可以把它想象成一组城市,关系就是有没有路,有路有多远。

我有来自我的 neo4j 查询的路径,想知道在以下条件下如何找到该路径的邻居。这些邻居应该是路径中多个节点的邻居。 在下图中,我试图说明我的意思。我的路径看起来像下面的蓝星。我想找到绿色节点。这些绿色节点连接到路径中的两个或多个节点。我已经画了一些这样的绿色节点。

作为输出,我希望有一个包含蓝色路径和绿色路径的路径。


编辑


我原来的路径看起来像

如果我使用@NonameCurious 建议的解决方案,我将拥有

如您所见,结果是一组没有关系的节点。我认为这是因为查询只返回节点。但是,我希望将这些“邻居”与原始路径之间的连接显示在原始路径的顶部。

【问题讨论】:

  • 蓝点似乎属于 2 条不相交的路径(每条路径都有 3 个蓝点)。
  • 你是对的!抱歉,刚刚更新了图..

标签: neo4j graph-databases


【解决方案1】:

这个怎么样:

WITH nodes(path) AS nodes
UNWIND nodes AS node
MATCH (a)--(node) WHERE NOT a IN nodes
WITH a, COUNT(DISTINCT node) AS relCounts
WITH a WHERE relCounts > 1
RETURN a

我假设给定了path

更新:

如果你需要过滤关系,你可以使用这样的东西:

WITH nodes(path) AS nodes
UNWIND nodes AS node
MATCH (a)-[r]-(node) WHERE NOT a IN nodes AND r.score > 27
WITH a, COUNT(DISTINCT node) AS relCounts
WITH a WHERE relCounts > 1
RETURN a

第二次更新: 如果你只是想以某种方式获得所有新节点和旧节点的子图,你可以这样做

WITH nodes(path) AS nodes, path UNWIND nodes AS node MATCH (a)-[r]-(node) 
WHERE NOT a IN nodes AND r.score > 27 
WITH a, COLLECT(DISTINCT node) AS connectedNodes, COLLECT(DISTINCT r) AS connectedRels, path WHERE SIZE(connectedNodes) > 1 
UNWIND connectedNodes AS connectedNode 
UNWIND connectedRels AS connectedRel 
RETURN a, connectedRel, connectedNode, path

【讨论】:

  • 谢谢 - 如何为关系添加过滤器?我使用了“(a)-[r]-(node)”,但抱怨 r。如果您也添加关系过滤器,我将不胜感激。
  • 您需要什么样的过滤器?你有什么要求?
  • 我的意思是,过滤数字关系。因此,我想要连接到路径中两个以上其他节点且得分大于 27 的邻居:)
  • 谢谢 - 有没有办法将这些节点及其与路径的关系一起添加?看来,这里的“a”只是节点——如何拥有一个包含原始路径和这些节点的新“路径”?
  • 如果你只是想以某种方式获得所有新节点和旧节点的子图,你可以这样做。 ==> WITH nodes(path) AS nodes, path UNWIND nodes AS node MATCH (a)-[r]-(node) WHERE NOT a IN nodes AND r.score > 27 WITH a, COLLECT(DISTINCT node) AS connectedNodes, COLLECT(DISTINCT r) AS connectedRels, path WHERE SIZE(connectedNodes) > 1 UNWIND connectedNodes AS connectedNode UNWIND connectedRels AS connectedRel RETURN a, connectedRel, connectedNode, path
猜你喜欢
  • 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
相关资源
最近更新 更多