【问题标题】:neo4j cypher return top node or start nodeneo4j cypher 返回顶部节点或起始节点
【发布时间】:2013-08-16 14:21:35
【问题描述】:

我有一个这样的分层组织结构:

OrgNode(3)-[HAS_PARENT]->OrgNode(2)-[HAS_PARENT]->OrgNode(1)

我想要一个密码查询,它可以在给定任何节点 ID 的情况下为我提供顶级组织:

topOrg(3) = OrgNode(1)
topOrg(2) = OrgNode(1)
topOrg(1) = OrgNode(1)

当起始节点至少有一个父节点时,我可以编写查询以返回顶级组织。但是当同一查询中没有父链接时,我无法弄清楚如何返回起始节点:

start n=node(3)
match (n)-[:PARENT*]->(m)-[r?:PARENT]->()
WHERE r is null
return m

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您可以使用 UNION 运算符将您的结果与另一个处理没有父节点的起始节点的查询的结果相结合,

    start n=node(3)
    match (n)-[:PARENT*]->(m)-[r?:PARENT]->()
    WHERE r is null
    return m as result
    UNION 
    Start n=node(3)
    Match n 
    Where not(n-[:PARENT]-())
    Return n as result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      相关资源
      最近更新 更多