简体   繁体   中英

Get relationship node from 2 edges in 1 cypher query

I need a cypher query that retrieves the weight of two edges at the same time. This is my attempt:

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 

The result contains two lines for each user who updated and viewed the file. However, I want the result in one line. For example: user: x - updated: 12 - viewed:15

How can I do this?

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

UPDATED:

try:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM