Neo4j 如何基于ID获取特定节点的所有父节点
我想获取所有3级节点(下图中的4、5、6和7)及其关系及其父节点详细信息 在以下示例中:Neo4j 如何基于ID获取特定节点的所有父节点,neo4j,cypher,Neo4j,Cypher,我想获取所有3级节点(下图中的4、5、6和7)及其关系及其父节点详细信息 在以下示例中: 如果我发送ID:7,那么我应该获得3和'1'的节点信息 如果我发送ID:4,那么我应该获得2和`1的节点信息 如何获取父节点详细信息?请帮忙 编辑: 我正在尝试查询节点、边和直接的父详细信息。我得到了节点和边,但对于父节点,我得到了一个大的节点列表。不知道为什么 Match(n)-[r]()可选匹配(父节点:ParentNodeType)因此,如果您想获取父节点的所有节点,请使用下面的查询 Match
- 如果我发送
,那么我应该获得ID:7
和'1'的节点信息3
- 如果我发送
,那么我应该获得ID:4
和`1的节点信息2
Match(n)-[r]()可选匹配(父节点:ParentNodeType)因此,如果您想获取父节点的所有节点,请使用下面的查询
Match (n)-[r]-() OPTIONAL MATCH (parent:ParentNodeType)<-[r1*]-(child) return n,r,COLLECT(parent) as parent
Match(n)-[r]()可选匹配(父:ParentNodeType)这是一个典型的路径查询。如果将其链接到子路径和根路径,则只需检索单个路径。下面我假设您将myid
作为参数传递,并且您已经使用:HAS_CHILD
关系链接了节点
// 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
您能否显示您正在尝试的确切查询。您是否有父节点、子节点和两个不同的节点,它们之间的关系名称是什么?我已经更新了这个问题,希望它现在有意义。我认为这应该可行。您是否尝试过此查询?使用此查询得到的结果是什么?如果您看到我更新的问题,我不会传递任何id。我想获取所有3级节点及其关系及其父节点详细信息
MATCH (p)<-[r*3]-(c) return p,r,c
// 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