Cypher排除关系

3

在我的图中,两个节点之间有多个关系。例如:A-[HAS_P]->BA-[HAS_Q]->BA-[HAS_R]->B。我该如何排除HAS_R而仍然显示模式A-[]-B,并保留其他两个关系HAS_PHAS_Q?我尝试了这个查询,但它显示所有关系,并没有排除HAS_R关系。

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

4

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

您可以通过取消选中此复选框来禁用此功能:

Neo4j浏览器配置


0

根据数据模型,您的查询可能可以简化:

(1) 如果你只有以下三种关系类型 (HAS_P, HAS_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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接