我正在尝试创建一个值数组,这些值将根据案例测试的结果进行分配。这个测试将在一个我已经知道在查询中使用预设值的查询中。
我试图在案例测试中嵌入的查询是这样的:
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
我想用距当前日期 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])
fd
然后将替换 cd
在原始查询的 WHERE
分割。我的案例测试会去哪里,是否正确编写(如果没有,有什么问题),我是否需要添加其他内容才能使其全部正常工作?
最佳答案
只需使用 WITH
block 进行计算并将其绑定(bind)到新变量,如下所示:
WITH 2 + 2 as y RETURN y;
这基本上将值 4 分配给 y。
在您的查询中,您已经有一个大的
WITH
堵塞。只需将您的计算放入那些绑定(bind)到新变量的计算中,然后您就可以在后续表达式中引用这些变量。不要尝试修改这些变量,只需根据需要创建新变量(使用新的
WITH
block )。如果您需要可以实际更改的变量,那么……嘿,您正在使用数据库,这是存储和更新信息的最终方式。创建一个新节点,然后根据需要对其进行更新。 :)
关于neo4j - 是否可以根据密码查询中的某些条件创建变量并进行分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733437/