graph - 用于查找图的根节点的 Cypher 查询
问题描述
我试图在图形数据库中找出特定的节点类型根。在 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 查询中找到节点类型的根节点。
解决方案
您可以在 WHERE 子句中使用模式来查找没有传入关系的节点。
如果您必须考虑节点的标签,则将其包含在模式中:
MATCH (root:A)
WHERE NOT (:A)-->(root) AND size((root)-->(:A)) > 1
...
如果您不需要了解连接节点的任何信息,并且您想确保根本没有任何关系进来,但至少有一个出去,您可以省略另一个节点的标签,并且查询变得更加高效,因为关系类型/方向度信息在节点本身,所以不需要展开:
MATCH (root:A)
WHERE NOT ()-->(root) AND size((root)-->()) > 1
...
推荐阅读
- php - 如何在 Laravel 8 中生成具有不同语言环境的当前 url?
- r - 循环遍历数据框列表并为每个数据框保存单独的图表
- c - 有人可以帮我做这个练习吗
- php - 使用 PHP 捕获 HTML 多选数组
- ios - Midi 音乐音高转换不适用于 Swift 中的 iOS
- javascript - ejs 模板中的 forEach 未定义
- java - 如何重新格式化 GetVertices 以返回 (x1,y1,0), (x2,y2,0), (x3,y3,0);?
- fortran - 如何运行具有太多子程序和函数的 Fortran 文件?
- python - 创建遗传算法
- google-cloud-shell - GCP:如何确保在 Cloud Shell Editor 中设置了 gcp 项目