Neo4j - 过滤掉包含特定关系的图表中的所有节点

时间:2018-02-21 15:21:10

标签: neo4j cypher

背景

我有一个图表,公司节点通过一个或多个关系相互连接。

看起来像这样:

enter image description here

努力实现:

我想保留所有节点之间的关系是" competes_on_backlinks"但是如果" links_to"的另一种关系?它们之间存在然后过滤掉那个节点。

我试过了:

MATCH p =(c:Company {name:"example.com"})-[r]-(b:Company) where NONE (x IN relationships(p) WHERE type(x) ="links_to") RETURN p

上述查询在图像中生成图形。

过滤出节点之间的唯一关系是" links_to"但它不会删除存在其他关系的节点(如图中所示)

许多其他尝试但结果相同。

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

  

The NOT operator can be used to exclude a pattern:

MATCH p = (c:Company {name:"F"})-[:competes_on_backlinks]-(b:Company) 
WHERE NOT (b)-[:links_to]-(c)
RETURN p