如何过滤Cypher指定的多次迭代的关系条件?

时间:2016-07-12 10:44:50

标签: neo4j cypher

我想让所有节点和关系在关系中匹配某些条件。

MATCH(a:DB {TABLE:'CONT',COLUMN:'STATUS_CDE'})-[b:RELATED*..]->(c:DB)
WHERE b.CLAUSE IN ['where','join','unknown']  
RETURN a,b,c

但是当我尝试执行上述查询时,我收到以下错误消息。

Type mismatch: expected Map, Node or Relationship but was Collection<Relationship>

我使用的是Neo4j社区版v3.0.1。 我怎样才能实现目标?

1 个答案:

答案 0 :(得分:2)

这是因为您对关系类型RELATED使用变量深度 - b现在是关系的集合,而不是您可以使用IN运算符的单个关系。

根据您是希望每个关系都具有其中一个值,还是只有一个/一个,您可以使用predicate这样的函数之一

MATCH(a:DB {TABLE:'CONT',COLUMN:'STATUS_CDE'})-[b:RELATED*..]->(c:DB)
WHERE all(rel in b where rel.name in ['where','join','unknown'])
RETURN a,b,c

(未测试的)