这是我的问题:
MATCH (a:Person)-[:Sent]->(m2:message)-[r:forward]->(m1:message)<-[Sent]-(b:Person)
WITH a, b, COUNT(r) as count
RETURN a,b,count
以下是结果示例:
a b count
name1 name2 2
name2 name1 3
我想在两个方向上得到2个节点之间转发消息的总和,因此我不希望像上一个例子那样有重复的结果
对于前面的例子,我想要这样的结果:
a b count
name1 name2 5
我尝试了很多查询,但无法找到任何解决方案或语法来获得此结果。
有没有办法获得这种结果? 提前感谢您的时间。
答案 0 :(得分:1)
以下是获取每对适用人群之间转发邮件总数的方法:
MATCH (a:Person)-[:Sent]->(:message)-[r:forward]-(:message)<-[:Sent]-(b:Person)
WHERE ID(a) < ID(b)
RETURN a, b, COUNT(r) as count;
MATCH
子句指定forward
关系的非方向性模式,以便它匹配两个方向的关系。 WHERE
子句确保您只为每对人获得一行结果。 此外,此查询会始终使用[:Sent]
,修复原始查询中的拼写错误。
答案 1 :(得分:0)
试一试:
MATCH (a:Person)-[:Sent]->(m2:message)-[r:forward]->(m1:message)<-[:Sent]-(b:Person)
WITH COLLECT(a) as rows, count(r) as count
RETURN {a:properties(rows[0]), b:properties(rows[1]), count: count}