cql没有在WITH语句中传递节点

时间:2016-10-20 13:46:57

标签: neo4j

如果具有该ID的用户不存在,我正在使用以下查询来计算已创建用户的数量并创建用户:

 MERGE (uc:UserCounter)
 ON CREATE SET uc.count = 0
 WITH uc
 MATCH (u:User{id:X})
 WITH uc, count(u) as counts
 MERGE (u:User{id:X})
 ON CREATE SET uc.count = uc.count+1, u.id = uc.count, u.creation_ts = TIMESTAMP()
 RETURN counts

我也会返回计数以查看用户之前是否存在。这个查询让我回来了 (无行)。经过一些调试,我得出结论,uc节点直到结束才被传递。我错过了什么?

1 个答案:

答案 0 :(得分:2)

这看起来与this question的问题相同:如果用户尚不存在,MATCH将不会返回任何行,尽管count()聚合。您需要OPTIONAL MATCH来代替它。

您的查询似乎已关闭:为什么您会在ID X上匹配/合并,然后在创建时使用当前计数覆盖它?同时执行它也可以正常工作。