Cypher排除关系

时间:2017-11-30 13:50:10

标签: neo4j cypher

在我的图表中,我在两个节点之间有多个关系。对于前者A-[HAS_P]->BA-[HAS_Q]->BA-[HAS_R]->B。如何排除HAS_R但仍显示其他两种关系A-[]-BHAS_P的模式HAS_Q?我尝试了此查询,但它显示了所有关系,但未排除HAS_R关系。

MATCH x = (A)-[r*..4]-(B) 
WHERE NONE(r in relationships(x) WHERE type(r)="HAS_R") 
RETURN x

2 个答案:

答案 0 :(得分:2)

默认情况下,浏览器配置为显示返回节点之间的所有关系。

您可以取消选中此复选框来停用此功能:

Neo4j browser configuration

答案 1 :(得分:0)

您的查询可以简化,具体取决于数据模型:

(1)如果您只有这三种关系类型(HAS_PHAS_RHAS_Q),则可以指定您允许的两种关系类型:

MATCH x = (A)-[:HAS_P|HAS_Q*..4]-(B)
RETURN x

(2)如果您可能有其他关系类型(以后可能会出现更多):

MATCH x = (A)-[*..4]-(B)
WHERE NONE(r in relationships(x) WHERE type(r) = 'HAS_R') 
RETURN x

注意:您不必在查询的r部分中指定关系的名称(MATCH)。

另外,请检查@logisima的处理Web浏览器UI的答案。