编辑 - 吉姆的回答 吉姆有这个问题的更好的答案,任何人发现这个问题应该使用。
MATCH (rootTk:Toolkit {level: "Level 0"})<-[:PrimaryChild*0..]-(tk:Toolkit)<-[:visitTo]-(hit:PageHit)
RETURN rootTk.title as Title,COUNT(hit.id) as Hits
它使用0长度(到无穷大)路径匹配使PrimaryChild关系成为非必需的。
原来的答案
MATCH (rootTk:Toolkit {level: "Level 0"})<-[:PrimaryChild*]-(tk:Toolkit)<-[:visitTo]-(hit:PageHit)
RETURN rootTk.title, COUNT(hit)
正如你说,这将返回命中只有TK节点上,以获得根,我认为,这将工作点击:
MATCH (rootTk:Toolkit {level: "Level 0"})
OPTIONAL MATCH (rootTk)<-[:PrimaryChild*]-(tk:Toolkit)<-[:visitTo]-(hit:PageHit)
WITH rootTk, COUNT(hit) as hits
OPTIONAL MATCH (rootTk)<-[:visitTo]-(rootHit:PageHit)
RETURN rootTk.title, hits + COUNT(rootHit)
它以两个阶段执行计数并添加值,我不确定是否有办法在单个阶段执行此操作而无需修改模型。
我想你可以做到这一点,但你可能会爆炸:
MATCH (rootTk:Toolkit {level: "Level 0"})
OPTIONAL MATCH (rootTk)<-[*]-(hit:PageHit)
RETURN rootTk.title, COUNT(hit)
谢谢。第一个选项奏效。 – 2014-09-26 17:53:08