2014-01-08 108 views
0

在暗号ID想回到像暗号比赛,其中在另一个集合中的每个集合元素

MATCH (i:VALID_RELATIONSHIPS), p=(n:MY_DOMAIN)-[rels*1..5]-(m) 
WHERE n.NAME='start_node' AND 
     ALL(t in rels WHERE type(t) IN extract(x IN i | x.RELATIONSHIP_NAME)) 
RETURN nodes(p); 

所以ALL t IN rels只含有一组已知的使用一些有效的关系名称的所有路径应包含的VALID_RELATIONSHIPS

集合中

但是这会返回异常i already defined with conflicting node type collection<any>

我在这里误解了什么吗?该算法应循环遍历路径中的所有rels(我认为它是一个集合),以及每一个;检查类型()被包含在有效收集关系i

回答

2

这一个是类型节点:i

你为什么不处于有效关系名称作为参数传递?

MATCH p=(n:MY_DOMAIN)-[rels*1..5]-(m) 
WHERE n.NAME='start_node' AND 
     ALL(t in rels WHERE type(t) IN {valid_rel_names}) 
RETURN nodes(p); 

否则,您必须收集您我的成收集第一

MATCH (i:VALID_RELATIONSHIPS) 
WITH collect(i) as valid_rels 
MATCH p=(n:MY_DOMAIN)-[rels*1..5]-(m) 
WHERE n.NAME='start_node' AND 
     ALL(t in rels WHERE type(t) IN extract(x IN valid_rels | x.RELATIONSHIP_NAME)) 
RETURN nodes(p); 

或已提取的前期

MATCH (i:VALID_RELATIONSHIPS) 
WITH collect(i.RELATIONSHIP_NAME) as valid_rel_names 
MATCH p=(n:MY_DOMAIN)-[rels*1..5]-(m) 
WHERE n.NAME='start_node' AND 
     ALL(t in rels WHERE type(t) IN valid_rel_names) 
RETURN nodes(p); 
+0

十分感谢迈克尔RELS。所以我认为我是一个集合的假设似乎完全不正确。那么,为什么雷斯是一个集合,我不是? –

相关问题