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

标签 neo4j conditional cypher case-statement

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

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

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/

相关文章:

scala - 基于scala中变量类型的条件

xslt - XSL - 评估条件表达式 "shortcut"吗?

neo4j - 如何在密码中获取 map 的值

collections - 在 Cypher 中获取集合的第 n 个元素

database - 数据如何存储在图数据库中?

spring - 无法将具有 @RelatedTo 传出方向的 NodeEntity 与另一个节点一起保存

neo4j - 使用 Cypher 修改 Neo4j 中的关系链

java - 相同的图形具有不同的尺寸

vim - 如何在 VIM 中设置条件映射(即 : depending on the extension of a file)?

python - 使用多个属性键进行 Py2Neo 合并