我想写一个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也应匹配。
但我无法弄清楚如何实现这种逻辑。
答案 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
需要使用哪些数据,以及您希望指定的S
和B
节点的数量。