【发布时间】:2015-02-19 00:03:06
【问题描述】:
我正在尝试在 Cypher 中实现逻辑,根据特定条件(CASE 语句),我将创建一些节点和关系;代码如下
MATCH (g:Game)-[:PLAYER]->(u:User)-[r1:AT]->(b1:Block)-[:NEXT]->(b2:Block)
WHERE g.game_id='G222' and u.email_id = 'xyz@example.com' and b1.block_id='16'
SET r1.status='Skipped', r1.enddate=20141225
WITH u, b2,b1, g, r1
SET b1.test = CASE b2.fork
WHEN 'y' THEN
MERGE (u)-[r2:STAGE {startdate:20141225, enddate:'99999999', status:'InProgress'}]->(b2 {fork:'fail'}) RETURN 1
ELSE
MERGE (u)-[r2:STAGE {startdate:20141225, enddate:'99999999', status:'InProgress'}]->(b2) RETURN 2
END
WITH u, g
MATCH (u)-[:TIME]->(h:Time)<-[:TIME]-(g)
SET h.after = 0
SET h.before = h.before + 1
在这个查询中,WHEN 'y' THEN 中有一个merge 语句,这个查询抛出一个错误:
无效的输入“]”:预期的空白或关系模式(第 7 行,第 82 列) "合并 (u)-[r2:STAGE {startdate:20141225, enddate:'99999999', status:'InProgress'}]->(b2 {fork:'fail'}) 返回 1"
基本上,我正在尝试基于属性(即CASE 语句中的MERGE)创建关系,我尝试了不同的方法来使其正常工作,例如返回,以便在返回某些值等情况下进行。到目前为止没有任何效果。
这个查询可能有什么问题?
【问题讨论】:
标签: merge neo4j logic case cypher