How to get all parent nodes of a particular node based on ID

后端 未结 2 465
没有蜡笔的小新
没有蜡笔的小新 2021-01-28 05:22

I want to fetch all 3rd level nodes(4,5,6 and 7 in below pic) and its relationships along with its parent node details In the below example:

  • If I send ID : 7
相关标签:
2条回答
  • 2021-01-28 05:43

    So If you want to get all nodes of parent then use below query

    Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<-[r1*]-(child)  return n,r,COLLECT(parent) as parent
    

    As you mentioned in comment you are looking for 3rd level parent so you can give level number also whatever you want to get. Please see below query for specific level

    Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<-[r1*3]-(child)  return n,r,COLLECT(parent) as parent
    

    and as per my understanding you do not need to write this long query. check below query if you are getting your required result

    MATCH (p)<-[r*3]-(c)  return p,r,c
    
    0 讨论(0)
  • 2021-01-28 05:44

    This is a typical path query. If you link it to both child and root, you only have to retrieve a single path. Below I assume that you pass myid as a parameter and that you have linked the nodes using :HAS_CHILD relationships

    // the path pattern
    MATCH path=(root)-[:HAS_CHILD*]->(child)  
    // limiting the search
    WHERE NOT ()-[:HAS_CHILD]->(root)
          AND child.ID = $myid
    
    //returning the results
    RETURN path
    
    or 
    
    // return the IDs, except the last one, because it is the node you started from
    UNWIND nodes(path)[..-1] AS node
    RETURN node.ID AS parent
    
    0 讨论(0)
提交回复
热议问题