用于查找图的根节点的 Cypher 查询

Cypher query for finding the root node of the graph

我想在图数据库中找出具体的节点类型root。在 Gremlin 查询中,我可以找到对根节点的计数。

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

上述查询将 return 根节点标题。 cypher查询中如何找到节点类型的根节点。

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

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

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

如果你不需要知道任何关于连接节点的信息,并且你想确保没有任何关系进来,但至少有一个出去,你可以省略标签另一个节点,查询变得更高效,因为关系type/direction度信息在节点本身,所以不需要展开:

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