我试着为一个计数设置两个不同的关系属性,一个case结构取决于另一个关系属性的值.http://console.neo4j.org/?id=rt1ld5上有一个控制台
cnt列包含r.value发生的次数.控制台中初始查询的前两行表示术语"Car"链接到1个被认为相关的文档,以及两个被认为不相关的文档.
我想在(用户)和(术语)之间的[:INTEREST]关系上设置一个属性,该属性有两个属性,表示兴趣链接到被认为是否相关的文档的次数.所以对于(John) - [r:INTEREST] - >(Car)我想要r.poscnt = 1而r.negcnt = 2
我正在努力与CASE结构.我尝试了各种方法,这是我得到的最接近的方式.
MATCH (u:user)-[int:INTEREST]->(t:term)<-[:ISABOUT]-(d:doc)<- [r:RELEVANCE]-(u)
WITH int, t.name, r.value, count(*) AS cnt
CASE
WHEN r.value=1 THEN SET int.poscnt=cnt
WHEN r.value=-1 THEN SET int.negcnt=cnt
END
Run Code Online (Sandbox Code Playgroud)
但它返回了一个错误
Error: Invalid input 'A': expected 'r/R' (line 3, column 2)
"CASE"
^
Run Code Online (Sandbox Code Playgroud)
这样做了!另请参阅http://console.neo4j.org/?id=rq2i7j上的控制台
MATCH (u:user)-[int:INTEREST]->(t:term)<-[:ISABOUT]-(d:doc)<-[r:RELEVANCE]-(u)
WITH int, t,
SUM(CASE WHEN r.value= 1 THEN 1 ELSE 0 END ) AS poscnt,
SUM(CASE WHEN r.value= -1 THEN 1 ELSE 0 END ) AS negcnt
SET int.pos=poscnt,int.neg=negcnt
RETURN t.name,int.pos,int.neg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7006 次 |
| 最近记录: |