当前位置: 首页 > 知识库问答 >
问题:

用Cypher从Neo4j图中提取子图

归星驰
2023-03-14

假设我在Neo4j中有一个由5个节点组成的集合,这样集合中的每个节点都至少连接到集合中的另一个节点。我想从Neo4J中提取节点集合及其交互所形成的子图。目前,我使用的是一个非常原始的方法,它涉及到试图从系统中的每个节点找到与其他每个节点的匹配:

MATCH p=(n)-[]->(m)
WHERE id(n) IN [3,4,5,6,7] AND id(m) IN [3,4,5,6,7]
RETURN relationships(p);

共有1个答案

锺离森
2023-03-14

我想扩展Richards的答案,你也可以将它限制到ID在不同组中的节点。

MATCH (n) WHERE id(n) IN [3,4,5,6,7]
MATCH p=(n)-->(m) 
WHERE id(n) < id(m) AND id(m) IN [3,4,5,6,7]
RETURN relationships(p);

中的结果

 类似资料:
  • 我正在使用REST与neo4j DB交互。

  • 是否可以在单个cypher查询中返回特定路径的不同节点和边缘。例如,使用电影图,下面的查询分别返回电影和演员,我想一起返回所有节点。使用path p=(...)和节点(p)实际上返回成对的节点,而不管使用不同的。 match(m:Movie { name:" Rain " })-(p:Person)return { nodes:collect(distinct { name:m . title }

  • 你知道这个错误的原因是什么吗?

  • 我需要设置一个节点的特定属性作为该节点的显示名称。 我正在从下面的列表中选择指定属性(箭头指向的位置),作为节点和关系的显示。 我也想通过密码来做同样的事情。 对于这个n,我想设置ip作为显示名称。

  • 我正在使用直接通过管道传输到neo4j-shell中的密码命令加载一个Neo4j数据库。一些实验表明,大约1000行的子图批给出了最佳吞吐量(大约3.2ms/行,300行/秒(慢!),Neo4j 2.0.1)。我使用MATCH语句将现有节点绑定到加载子图。下面是一个截断的例子:

  • 我有一个密码脚本文件,我想直接运行它。 就我所知,我能找到的所有答案都使用命令,在我的版本(Neo4j server 3.5.5)中,该命令似乎不推荐使用,而是用命令代替。 一个命令行shell,您可以在其中对neo4j的实例执行Cypher。缺省情况下,shell是交互式的,但是您可以通过直接在命令行上传递cypher或通过管道传输带有cypher语句的文件(在Windows上需要Powersh