Graph 用于查找图的根节点的Cypher查询
我试图在图形数据库中找到特定的节点类型根。在Gremlin查询中,我可以找到count根节点Graph 用于查找图的根节点的Cypher查询,graph,neo4j,cypher,cql,gremlin-server,Graph,Neo4j,Cypher,Cql,Gremlin Server,我试图在图形数据库中找到特定的节点类型根。在Gremlin查询中,我可以找到count根节点 query = """g.V().hasLabel("A") .filter( out().hasLabel("A").count().is(gt(1)) .and() .in().hasLabel("A").count().is(eq(0)) ) .values("title")""" 上述查询将返回根节点标题。如何在cyph
query = """g.V().hasLabel("A")
.filter(
out().hasLabel("A").count().is(gt(1))
.and()
.in().hasLabel("A").count().is(eq(0))
)
.values("title")"""
上述查询将返回根节点标题。如何在cypher查询中找到节点类型的根节点。您可以使用WHERE子句中的模式查找没有传入关系的节点
如果必须考虑节点的标签,则将其包含在模式中:
MATCH (root:A)
WHERE NOT (:A)-->(root) AND size((root)-->(:A)) > 1
...
如果您不需要了解任何有关连接节点的信息,并且您希望确保根本没有关系进入,但至少有一个关系离开,那么您可以省去另一个节点的标签,查询会变得更高效,因为关系类型/方向度信息位于节点本身,因此,无需扩大:
MATCH (root:A)
WHERE NOT ()-->(root) AND size((root)-->()) > 1
...
所以,基本上您希望节点没有传入关系和一个或多个传出关系,对吗?只是检查一下,您真的需要gt(1)吗?gt(0)在这种情况下不适用于您?