【问题标题】:cql doesnt pass node in WITH statementcql 在 WITH 语句中不传递节点
【发布时间】:2016-10-20 13:46:57
【问题描述】:

我正在使用以下查询来计算已创建用户的数量,并在具有该 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节点直到最后才通过。我错过了什么?

【问题讨论】:

标签: neo4j


【解决方案1】:

这看起来与this question 的问题相同:如果用户还不存在,尽管count() 聚合,MATCH 将不会返回任何行。你需要一个OPTIONAL MATCH 才能让它工作。

您的查询似乎关闭了:您为什么要在 id X 上匹配/合并,然后在创建时用当前计数覆盖它?同时执行时它是否能正常工作也令人怀疑。

【讨论】:

  • 它现在可以工作了,谢谢,在我的“可疑”查询背后是一个很长的故事;)
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 2019-12-25
  • 2019-09-19
  • 2018-12-06
  • 1970-01-01
  • 2017-07-23
相关资源
最近更新 更多