检索arangodb中没有链接边的顶点
检索相关边集合中没有边的所有顶点的最佳方法是什么 我尝试过使用下面的代码,但自从Arangodb2.8以来,它的速度变得非常慢(在以前的版本中它并不是很快,但大约是现在的10倍)。大约1000条边和3000个顶点的集合大小需要30秒以上的时间检索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 更新 在玩了一会儿之后,我得出了以下
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吗?是的,对于舒尔。固定的。