Если у вас есть документ с _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
Обходиспользование именованного графа имеет то преимущество, что рассматриваются все граничные коллекции графа. Если у него есть несколько коллекций вершин, вам все равно нужно проверить каждую коллекцию отдельно.