Cypher查询查找图的根节点

问题描述 投票:1回答:1

我试图找出图数据库中的特定节点类型根。在Gremlin查询中,我可以找到计算根节点。

 query = """g.V().hasLabel("A")
    .filter(
        out().hasLabel("A").count().is(gt(1))
        .and()
        .in().hasLabel("A").count().is(eq(0))
    )
    .values("title")"""

以上查询将返回根节点标题。如何在cypher查询中找到节点类型的根节点。

graph neo4j cypher cql gremlin-server
1个回答
1
投票

您可以使用WHERE子句中的模式来查找没有传入关系的节点。

如果必须考虑节点的标签,请在模式中包含:

MATCH (root:A)
WHERE NOT (:A)-->(root) AND size((root)-->(:A)) > 1
...

如果您不需要了解有关连接节点的任何信息,并且您希望确保根本没有任何关系,但至少有一个关闭,您可以省略另一个节点的标签,并且查询变得更有效,因为关系类型/方向度信息在节点本身上,因此不需要扩展:

MATCH (root:A)
WHERE NOT ()-->(root) AND size((root)-->()) > 1
...
© www.soinside.com 2019 - 2024. All rights reserved.