Cypher IF A AND NOT(B)in match

时间:2016-03-01 23:53:53

标签: if-statement neo4j match cypher

我想写一个cypher子句说(我知道这不是正确的语法,它只是一个展示一般想法的例子):

IF (S1)-->(B1{attr:TRUE})-->(G) AND NOT((S2)-->(B2{attr:FALSE})-->(G))
THEN stuff

因此,如果我只有B1节点attr=TRUE,我希望模式匹配。如果B1 attr=TRUE B2 attr=FALSE B1 attr=TRUE,我希望模式匹配。在找到至少 by=merge(foo, foo[!names(foo) %in% "day"], by.x=c("user","day"), by.y=c("user","prev_day")) 的所有其他情况下,mattern也应匹配。

但我无法弄清楚如何实现这种逻辑。

1 个答案:

答案 0 :(得分:1)

以下是如何执行此操作的示例:

MATCH (S1)-->(B1{attr:TRUE})-->(G)
WHERE NOT ()-->({attr:FALSE})-->(G)
... stuff ...

或者,如果stuff需要使用B2个节点:

MATCH (S1)-->(B1{attr:TRUE})-->(G), (B2{attr:FALSE})
WHERE NOT ()-->(B2)-->(G)
... stuff ...

这应该让你知道如何开始。这完全取决于您stuff需要使用哪些数据,以及您希望指定的SB节点的数量。