检索arangodb中没有链接边的顶点

检索arangodb中没有链接边的顶点,arangodb,aql,Arangodb,Aql,检索相关边集合中没有边的所有顶点的最佳方法是什么 我尝试过使用下面的代码,但自从Arangodb2.8以来,它的速度变得非常慢(在以前的版本中它并不是很快,但大约是现在的10倍)。大约1000条边和3000个顶点的集合大小需要30秒以上的时间 FOR v IN vertex_collection FILTER LENGTH( EDGES(edge_collection, v._id, "outbound"))==0 RETURN v._id 更新 在玩了一会儿之后,我得出了以下

检索相关边集合中没有边的所有顶点的最佳方法是什么

我尝试过使用下面的代码,但自从Arangodb2.8以来,它的速度变得非常慢(在以前的版本中它并不是很快,但大约是现在的10倍)。大约1000条边和3000个顶点的集合大小需要30秒以上的时间

FOR v IN vertex_collection  
    FILTER LENGTH( EDGES(edge_collection, v._id, "outbound"))==0
RETURN v._id

更新

在玩了一会儿之后,我得出了以下问题

LET vIDs = (FOR v IN vertex_collection
            RETURN v._id)
LET vEdgesFrom = (FOR e IN edge_collection
                  FILTER e._from IN vIDs
                  RETURN e._from)
FOR v IN vertex_collection
    FILTER v._id IN MINUS(vIDs, vEdgesFrom)
RETURN v._id
这一个要快得多(大约0.05秒),但看起来仍然像是某种解决方法(只需考虑我们需要查询的多个边缘集合)


因此,我仍在寻找在特定边集合中找到没有边的顶点的最佳方法。

我的建议将是类似的,而不是使用图形特征

FOR oneEdge IN edges
LET vertices=(FOR oneVertex IN vertices
        FILTER oneEdge._from == oneVertex._id OR
               oneEdge._to == oneVertex._id
        RETURN 1)
FILTER LENGTH(vertices) < 2
RETURN {v: vertices, e: oneEdge}
用于边中的一条边
设顶点=(对于顶点中的一个顶点)
筛选oneEdge.\u from==oneVertex.\u id或
oneEdge.\u to==oneVertex.\u id
返回1)
过滤器长度(顶点)<2
返回{v:vertices,e:oneEdge}
查找
\u from
\u to
中的一个指向nil的所有边,然后将其删除


请注意
返回1
,它将减少从内部查询传递的数据量。

我假设它应该是onedge。\u to==oneVertex。\u id,对吗?对于此查询,顶点不总是1吗?是的,对于舒尔。固定的。