是否可以根据密码查询中的某些条件创建变量并进行赋值?

clu*_*ein 5 conditional case-statement neo4j cypher

我正在尝试创建将根据案例测试的结果分配的值的数组。该测试将在查询中进行,我已经知道该查询可以在查询中使用预设值。

我试图嵌入到案例测试中的查询是这样的:

WITH SPLIT (('07/28/2015'), '/' AS cd
MATCH (nodeA: NodeTypeA)-(r:ARelation)->(nodeB: NodeTypeB)
WITH cd, SPLIT (nodeA.ADate, '/') AS dd, nodeA, nodeB, r
WHERE
    (TOINT(cd[2])> TOINT(dd[2])) OR (TOINT(cd[2]= TOINT(dd[2]) AND ((TOINT(cd[0])> TOINT(dd[0])) OR (TOINT(cd[0])= TOINT(dd[0]) AND (TOINT(cd[1])>= TOINT(dd[1])))))
RETURN nodeA, nodeB, r
Run Code Online (Sandbox Code Playgroud)

我想将当前日期替换为距离当前日期6个月的任何日期,并且我想出了类似这样的内容,尽管我不确定在查询中将其放置在什么地方,甚至不确定它是否可以工作(我以某种方式初始化新变量?):

WHEN ((TOINT(cd[0])> 6))
THEN 
  TOINT(fd[2])=TOINT(cd[2])+1, TOINT(fd[0])=TOINT(cd[0])-6, TOINT(fd[1])=TOINT(cd[1])
ELSE
  TOINT(fd[2])=TOINT(cd[2]), TOINT(fd[0])=TOINT(cd[0])+6, TOINT(fd[1])=TOINT(cd[1])
Run Code Online (Sandbox Code Playgroud)

fd然后将替换cd原始查询的WHERE细分中的。我的案例测试会去哪儿,它是否编写正确(如果没有,那是什么问题),我是否需要添加其他内容才能使其全部正常工作?

Fro*_*its 4

只需使用一个WITH块进行计算并将其绑定到一个新变量,如下所示:

WITH 2 + 2 as y RETURN y;
Run Code Online (Sandbox Code Playgroud)

这基本上将值 4 分配给 y。

在您的查询中,您已经有一个大块WITH。只需将计算放入其中,绑定到新变量,然后您就可以在后续表达式中引用这些变量。

不要尝试修改这些变量,只需WITH根据需要创建新变量(使用新块)。如果您需要实际可以更改的变量,那么...嘿,您正在使用数据库,这是存储和更新信息的最终方式。创建一个新节点,然后根据需要更新它。:)