我试图在我的顶点集合中找到所有悬挂的文档。为此,我想我必须找到indegree = 0的所有顶点。如何使用AQL做到这一点。
答案 0 :(得分:2)
假设您在集合_key
和边集合A
中有Verts
= Edges
的文档,那么可以像这样确定度数:
RETURN LENGTH(FOR v IN INBOUND 'Verts/A' Edges RETURN true)
如果您有一个命名图MyGraph
,请使用它:
RETURN LENGTH(FOR v IN INBOUND 'Verts/A' GRAPH 'MyGraph' RETURN true)
要确定哪些顶点没有入站边,可以执行以下操作:
FOR s IN Verts
FILTER NOT FIRST(FOR v IN INBOUND s._id Edges LIMIT 1 RETURN true)
RETURN s._id
要查找悬垂的顶点(不存在任何连接的边),则必须将INBOUND
更改为ANY
。
使用边缘索引而不进行遍历比使用子查询遍历更好:
FOR v IN Verts
FILTER NOT FIRST(FOR e IN Edges
FILTER v._id == e._from || v._id == e._to
LIMIT 1
RETURN true)
RETURN v._id
使用命名图进行遍历的好处是考虑了图的所有边缘集合。如果它具有多个顶点集合,那么您确实需要单独检查每个集合。