如果具有该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节点直到结束才被传递。我错过了什么?
答案 0 :(得分:2)
这看起来与this question的问题相同:如果用户尚不存在,MATCH
将不会返回任何行,尽管count()
聚合。您需要OPTIONAL MATCH
来代替它。
您的查询似乎已关闭:为什么您会在ID X上匹配/合并,然后在创建时使用当前计数覆盖它?同时执行它也可以正常工作。