Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 将在两个节点之间仅返回每种类型的1个关系的Cypher查询_Neo4j_Cypher - Fatal编程技术网

Neo4j 将在两个节点之间仅返回每种类型的1个关系的Cypher查询

Neo4j 将在两个节点之间仅返回每种类型的1个关系的Cypher查询,neo4j,cypher,Neo4j,Cypher,如何创建一个只返回两个节点之间某一类型的一个关系的查询 例如: MATCH (a)-[r:InteractsWith*..5]->(b) RETURN a,r,b 由于(a)可能与(b)多次交互,因此结果将包含二者之间的许多关系。然而,两者之间的关系并不完全相同。它们具有不同的属性,因为它们发生在不同的时间点 但是如果你只对他们至少互动过一次这一事实感兴趣怎么办 我希望收到的结果不是: (a)和(b)之间的关系集中只有一个随机关系 仅适用于符合某些标准的关系(例如,“最新”或每种类型中

如何创建一个只返回两个节点之间某一类型的一个关系的查询

例如:

MATCH (a)-[r:InteractsWith*..5]->(b) RETURN a,r,b
由于(a)可能与(b)多次交互,因此结果将包含二者之间的许多关系。然而,两者之间的关系并不完全相同。它们具有不同的属性,因为它们发生在不同的时间点

但是如果你只对他们至少互动过一次这一事实感兴趣怎么办

我希望收到的结果不是:

  • (a)和(b)之间的关系集中只有一个随机关系
  • 仅适用于符合某些标准的关系(例如,“最新”或每种类型中的一种,…)
我想到的一种方法是创建“HaseEverInteractived”类型的新关系。但是应该有另一种方法,对吗?

使用
最短路径()
来获得最快的单一结果

MATCH (a)-[:InteractsWith*..5]->(b)
WITH DISTINCT a, b
MATCH p = shortestPath((a)-[:InteractsWith*..5]->(b))
RETURN a, b, RELATIONSHIPS(p) AS r
如果你想得到一个特定的,你必须得到所有的
r
,然后过滤掉它们,这样会比较慢(但提供更多的上下文)


第一个查询给出了一个错误(变量a未定义),当我在前面添加“MATCH(a)-[r:interactiswith*.5]->(b)”时,它仍然说“Type mismatch:expected Path but was Collection(第3行,第28列(偏移量:124))”返回a,b,RELATIONSHIPS(p)AS r“,我更新了答案<代码>最短路径是一种模式而不是函数,因此有时其行为与预期不同。对不起,谢谢,现在没有错了。但是我仍然没有通过第一个查询获得期望的结果。这就是我得到的:可视化工具默认设置为自动完成,显示它显示的节点之间的所有关系,即使查询没有返回这些关系。在视图窗口的右下角有一个开关可以关闭它。好的,我知道,应该知道。。。很抱歉再次打扰您,谢谢!
MATCH (a)-[r:InteractsWith*..5]->(b)
WITH a, b, COLLECT(r) AS rs
RETURN a, b, REDUCE(s = HEAD(rs), r IN TAIL(rs)|CASE WHEN s.date > r.date THEN s ELSE r END)