1
在Neo4J数据库中,我需要找到一个具有3个命名节点(假设为a,b,c)和其他一些非命名节点的(复杂)模式,但前提是没有连接到a,b和c的节点(称为“x”)。Cypher WHERE NOT EXISTS与命名变量
我想写类似:
MATCH (a:A)-<something>-(b:B)-<something>-(c:C)
WHERE NOT EXISTS ((a)--(x:X)--(b), (x)--(c))
RETURN a, b, c
,但我得到 “变量x
没有定义”。如果只有连接到(a)和(b)时才禁止x,那将很容易。而NOT EXISTS (a)--(:X)--(b) AND NOT EXISTS (a)--(:X)--(c)
太强大了。
任何想法?
谢谢,就这么简单!是一种声音,我需要拆我的 “NOT EXISTS” 部分有两种: 'MATCH (X:X), (A:A) - - (B:B) - - (C:C) (0) - (x) - (b)) 不存在((x) - (c)) 返回a,b,c' –
Vandy
好的,该解决方案适用于小数据集,但它需要一个笛卡儿积......我需要在几个小时后停止我的请求,我有近10亿个节点:-(任何其他想法? – Vandy
@Vandy你可以尝试在两个MATCH中拆分查询,如: (a) - (x) - (b),((b)) - (c) MATCH(a:A) - - (b:B) - - x) - (c)) RETURN a,b,c'。 –