我有这个样本数据
使用这个样本查询
CREATE (a1:A {title: "a1"})
CREATE (a2:A {title: "a2"})
CREATE (a3:A {title: "a3"})
CREATE (b1:B {title: "b1"})
CREATE (b2:B {title: "b2"})
MATCH (a:A {title: "a1"}), (b:B {title: "b1"})
CREATE (a)-[r:LINKS]->(b)
MATCH (a:A), (b:B) return a,b
我希望实现的目标:
- 找到所有未连接到B节点类型的A节点类型(答案:a2、a3)
- 找到所有未连接到A节点类型的B节点类型(答案:b2)
- 这两个要求都是双向的,并且具有相同的查询模板。
我的进展情况
获取所有未连接到B节点的A节点:如预期获得a2和a3。
MATCH path=(a:A)-[r]-(b:B)
WHERE (a)-[r]-(b)
WITH collect(a) as al
MATCH (c:A)
WHERE not c IN al
RETURN c
获取所有已断开的B,我得到了b1和b2,这是不正确的,并且打印“al”表明该列表为空。
MATCH path=(b:B)-[r]-(a:A)
WHERE (b)-[r]-(a)
WITH collect(b) as al
MATCH (c:B)
WHERE not c IN al
RETURN c
一些方法。
WHERE (b)-[r]-(a) **!=** WHERE (a)-[r]-(b)
即使我将方向设置为双向(未提及),也无法正常工作。如果我在第二个查询中将其更改为
WHERE (a)-[r]-(b)
,则可以正常工作,但我想要一个通用的双向查询。
MATCH (a:A) WHERE NOT (a)--(:B) RETURN a
和MATCH (b:B) WHERE NOT (b)--(:A) RETURN b
呢? - Bruno Peres