当使用Arangodb容器在进行图遍历过滤时,如果数据量过大,可能会达到内存限制并导致崩溃。为了解决这个问题,我们可以采取以下方法:
FOR v, e, p IN 1..3 OUTBOUND 'vertices/1' GRAPH 'myGraph'
FILTER p.edges[*].property == 'value'
RETURN p.vertices[*].property
在上面的代码中,我们使用路径过滤器 FILTER p.edges[*].property == 'value'
来筛选出符合条件的路径。
FOR v, e, p IN 1..3 OUTBOUND 'vertices/1' GRAPH 'myGraph'
LIMIT 100
RETURN p.vertices[*].property
在上面的代码中,我们使用LIMIT关键字来限制结果集的大小为100。
LET cursor = (
FOR v, e, p IN 1..3 OUTBOUND 'vertices/1' GRAPH 'myGraph'
RETURN p.vertices[*].property
)
LET batchSize = 100
LET total = LENGTH(cursor)
LET processed = 0
WHILE processed < total
LET batch = (FOR v IN cursor LIMIT processed, batchSize RETURN v)
// 处理当前批次的数据
// ...
LET processed = processed + batchSize
END
在上面的代码中,我们使用游标来获取所有需要处理的数据,然后根据设定的批次大小将数据分批处理。
通过以上方法,我们可以有效地减少内存的使用,从而解决Arangodb容器在使用“path”进行图遍历过滤时达到内存限制并崩溃的问题。
上一篇:ArangoDB请求负载均衡