找到至少有2个传出关系的所有节点

时间:2016-08-17 07:46:52

标签: neo4j cypher

我正在尝试自己学习neo4j,我遇到了一些困难。我们假设我们有一个图表,在关系中有关系:DIRECTED:ACTED_IN

Q值。如何将具有两者这些关系的所有节点作为传出关系返回(我希望答案更为通用,可以扩展到k固定关系,而不仅仅是{{ 1}}如例子?)?

2 个答案:

答案 0 :(得分:0)

您可以使用size运算符并匹配我认为的返回数字:

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

请注意,您还可以指定关系的方向:

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

答案 1 :(得分: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