我试图在两个节点之间的图中查找所有路径,但条件是该路径中的任何节点都必须连接到另一个标签为TIMESWITCH且有效的endDate和startDate的节点。
TIMESWITCH节点的目的是表明所连接的节点只能在特定时间范围内使用。
所以我用了这个Cypher查询:
MATCH p=(:MYNODE {myid:'node1'}) -[*]- (:MYNODE {myid:'node2'})
WHERE ALL(n in nodes(p) WHERE EXISTS(
(n)<--(ts:TIMESWITCH)
WHERE ts.startDate < datetime("2018-10-01T00:00:00") <= ts.endDate ))
RETURN p
但是此查询不正确,因为EXISTS内禁止使用WHERE子句。这仅表示存在之内,一个人可以测试相等性,但不能测试不平等性。
所以我不知道该怎么办...我应该怎么写那个存在的东西?
答案 0 :(得分:1)
您应该能够使用模式理解作为解决方法,因为模式理解允许您为理解引入新的变量,并使用WHERE子句进行过滤。您只需要检查理解的大小即可确保它不为空。
MATCH p=(:MYNODE {myid:'node1'}) -[*]- (:MYNODE {myid:'node2'})
WHERE ALL(n in nodes(p) WHERE size([(n)<--(ts:TIMESWITCH)
WHERE ts.startDate < datetime("2018-10-01T00:00:00") <= ts.endDate | ts]) > 0)
RETURN p