2016-08-17 99 views
0

我想亲自学习neo4j,并遇到一些困难。假设我们有一个图表,并且在关系中有:DIRECTED:ACTED_IN查找所有至少有两个离任关系的节点

问:如何返回所有有两个这些关系为那些即将离任的节点(我将不胜感激的答案是比较一般的,并可以扩展到k固定的关系,而不是仅仅k=2作为例子?)?

回答

0

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 
0

您可以使用size运营商和匹配上返回的数字,我认为:

MATCH (a:Label) where size((a)--()) = 2 

请注意,您也可以为关系指定了方向:

MATCH (a:Label) where size((a)-->()) = 2 //For outgoing relationships. 
+0

谢谢你的回答,但没有这个命令将返回所有至少有** **任意3种关系的节点? – thanasissdr

+0

哦,是的,我的不好,我纠正了这一点。 – Supamiu

+0

再一次,我不应该在我的代码中声明我希望这两个特定关系满足的地方吗? – thanasissdr