Cypher查询:选择分支而不丢失部分

时间:2015-04-27 14:27:44

标签: collections neo4j filtering cypher

我是Cypher的新手,正在努力做一个基本的过滤器。

鉴于以下型号,我只想检索“d2”。

a1-
 | \c1
 | /  \
b1-    \d1
       /
a2-   /
   \c2
   /  
b2-    

a3-
 | \c3--d2
 | /  
b3-   

我看到了确定缺失部分的事情:

(match (a)--(c)--(d) WHERE NOT (a)--(b)--(c) return d)

给了我“d1”。

如何从给定列表(d1,d2)执行WHERE ALL (a)--(b)或从上面的查询(d1)中删除一组节点?

1 个答案:

答案 0 :(得分:0)

发现我认为是一种肮脏的方式(猜测性能会很糟糕),但确实如此:

match (a)--(c)--(b), (c)--(d)
where not (a)--(b)
with collect(d) as excluded
match (a)--(c)--(b)--(a), (c)--(d)
where NOT d IN excluded
return d;

任何更好的主意都会很棒: - )