【问题标题】:Cypher query for finding the root node of the graph用于查找图的根节点的 Cypher 查询
【发布时间】:2019-08-03 00:19:10
【问题描述】:

我正在尝试在图形数据库中找出特定的节点类型根。在 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 查询中找到节点类型的根节点。

【问题讨论】:

  • 所以基本上你想要没有传入关系和一个或多个传出关系的节点,对吧?
  • 只是检查一下,你真的需要 gt(1) 吗?在这种情况下 gt(0) 对你不起作用?

标签: graph neo4j cypher cql gremlin-server


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2020-03-04
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多