用于查找图的根节点的 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
...
我想在图数据库中找出具体的节点类型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
...