0
我想亲自学习neo4j,并遇到一些困难。假设我们有一个图表,并且在关系中有:DIRECTED
和:ACTED_IN
。查找所有至少有两个离任关系的节点
问:如何返回所有有两个这些关系为那些即将离任的节点(我将不胜感激的答案是比较一般的,并可以扩展到k
固定的关系,而不是仅仅k=2
作为例子?)?
我想亲自学习neo4j,并遇到一些困难。假设我们有一个图表,并且在关系中有:DIRECTED
和:ACTED_IN
。查找所有至少有两个离任关系的节点
问:如何返回所有有两个这些关系为那些即将离任的节点(我将不胜感激的答案是比较一般的,并可以扩展到k
固定的关系,而不是仅仅k=2
作为例子?)?
1)第一个选项(至少有这些节点two relations):
MATCH()<-[:DIRECTED]-(I)-[:ACTED_IN]->()
RETURN distinct I
2)如果你想检查组关系类型:
// Declare an array of type
WITH ['DIRECTED','ACTED_IN'] as rtypes
// Select connected nodes
MATCH (I)-[r]->()
WITH I,
rtypes,
// Filter the types of relationships for this node on the basis of a given array types
FILTER(rt in collect(distinct type(r)) WHERE rt IN rtypes) as types
// The resulting array size must match the specified array
WHERE size(types) = size(rtypes)
RETURN I
您可以使用size
运营商和匹配上返回的数字,我认为:
MATCH (a:Label) where size((a)--()) = 2
请注意,您也可以为关系指定了方向:
MATCH (a:Label) where size((a)-->()) = 2 //For outgoing relationships.
谢谢你的回答,但没有这个命令将返回所有至少有** **任意3种关系的节点? – thanasissdr
哦,是的,我的不好,我纠正了这一点。 – Supamiu
再一次,我不应该在我的代码中声明我希望这两个特定关系满足的地方吗? – thanasissdr