假设我有多个边缘的超级节点,并希望快速返回给定节点的前N个边缘。如何使用arangodb Vertex Centric Index https://docs.arangodb.com/3.1/Manual/Indexing/VertexCentric.html进行操作?
我可以创建跳转列表顶点中心索引
arangosh> db.collection.ensureIndex({ type: "skiplist", fields: [ "_from", "points" ] })
但是优化器不会使用排序查询
来提取它FOR edge IN collection
FILTER edge._from == "vertices/123456"
SORT edge.points DESC
LIMIT 0, 10
RETURN edge
似乎arango优化器不会在遍历语法中选择跳转列表Vertex Centric Index,但文档说它应该:
FOR v, e, p IN 3..5 OUTBOUND @start GRAPH @graphName
FILTER p.edges[*].points ALL >0
RETURN v
答案 0 :(得分:0)
快速返回给定节点的前N个边缘
最好从节点开始:
FOR v, e IN 1..1 ANY @start @edges
SORT e.points DESC
LIMIT 10
RETURN e
这应该与ArangoDB的当前版本(3.3)一样好,假设你让ArangoDB索引_from
- 我怀疑为.points添加一个跳转列表会是什么(有益的)差异,除非您在FILTER中使用它。
(我相信使用跳过列表索引_from在这里是不明智的。如果edges
是一个边缘集合,它已经被正确编入索引。)