我正在尝试创建一个值数组,这些值将根据案例测试的结果进行分配。此测试将在我已经知道的查询中使用查询中的预设值。
我试图在案例测试中嵌入的查询是这样的:
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
。我的案例测试将在哪里进行,是否正确编写(如果没有,有什么问题),我是否还需要添加其他内容才能使其全部工作?
答案 0 :(得分:2)
只需使用WITH
块进行计算并将其绑定到新变量,如下所示:
WITH 2 + 2 as y RETURN y;
这基本上将值4分配给y。
在您的查询中,您已经有一个很大的WITH
块。只需将计算放入那些绑定到新变量的计算中,然后就可以在后续表达式中引用这些变量。
请勿尝试修改这些变量,只需根据需要创建新变量(使用新的WITH
块)。如果您需要可以实际更改的变量,那么......嘿,您正在使用数据库,这是存储和更新信息的最终方式。创建一个新节点,然后根据需要更新它。 :)
答案 1 :(得分:1)
这是我提出的解决方案 说明:我在我的查询中声明了四个变量,即name1,name2,ken和lana,我使用这些变量创建MATCH模式(在MATCH子句中)并过滤Where子句中的变量。
WITH "Lau" AS name1,
"L" AS name2,
"Keanu Reeves" AS ken,
"Lana Wachowski" AS lana
MATCH(x:Person{ name: ken})-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(y:Person),
(x1:Person{name: lana})-[:DIRECTED]->(m)<-[:DIRECTED]-(y1:Person)
WHERE y.name CONTAINS name1 OR
y.name CONTAINS name2 OR
(y.name CONTAINS name1 AND y.name CONTAINS name2)
RETURN x, m, y, x1;