Graph 在1密码查询中从2条边获取关系节点

Graph 在1密码查询中从2条边获取关系节点,graph,neo4j,cypher,Graph,Neo4j,Cypher,我需要一个同时检索两条边的权重的密码查询。这是我的尝试: MATCH (n:User)-[r:VIEWED|UPDATED]->(f:File) WHERE f.id IN 'some_id','another_id'] RETURN n, r.weight, ORDER BY r.weight DESC 结果包含更新和查看文件的每个用户的两行。但是,我希望结果只显示一行。例如:用户:x-更新:12-查看:15 我如何才能做到这一点?更新: MATCH (n:User)-[r:VIEW

我需要一个同时检索两条边的权重的密码查询。这是我的尝试:

MATCH (n:User)-[r:VIEWED|UPDATED]->(f:File) WHERE f.id IN 'some_id','another_id'] RETURN n, r.weight, ORDER BY r.weight DESC 
结果包含更新和查看文件的每个用户的两行。但是,我希望结果只显示一行。例如:用户:x-更新:12-查看:15

我如何才能做到这一点?

更新:

MATCH (n:User)-[r:VIEWED|UPDATED]->(f:File) 
WHERE f.id IN ['some_id','another_id'] 
RETURN n, collect(type(r)), collect(r.weight)
尝试:


非常感谢。现在我得到如下结果:user:x-[viewsed,viewsed,updated]-[7,7,4]是否也可以得到所有查看关系的总和?我还对用户查看和更新任何文件而不是每个文件的频率感兴趣。在这个例子中,我希望得到这样的结果:user:x-查看:14-更新:4虽然这段代码可能会回答这个问题,但提供关于这段代码为什么和/或如何回答这个问题的附加上下文可以提高它的长期价值。通过阅读collect函数的文档,我想我的回答几乎是不言自明的。完全引用文档违反了所谓的网络礼仪。谢谢!该查询似乎有效,但由于我的文件数组可能相当大(最多500个文件),因此该查询的性能相当低。我仍在等待它返回结果:(还有其他建议吗?我目前使用的版本2.2中似乎存在问题()。但是,我对该查询有一个不同的问题。我创建了一些testNodes。user、viewed:10、Update:2和一个文件。当我运行该查询时,结果是totalViewedWeight:40、totalUpdatedWeight:8。你知道为什么吗?我希望结果是viewed:10和Update:2。工作非常好,非常快。非常感谢:)
MATCH (f:File)
OPTIONAL MATCH (n:User)-[r1:VIEWED]->(f:File)
    OPTIONAL MATCH (n:User)-[r2:UPDATED]->(f:File)
    where f.id IN ['some_id','another_id']
  return n, 
  sum(r1.weight) as totalViewedWeight, 
  sum(r2.weight) as totalUpdatedWeight