首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ArangoDB中快速向文档中添加边缘计数

在ArangoDB中快速向文档中添加边缘计数
EN

Stack Overflow用户
提问于 2016-03-11 17:43:30
回答 1查看 1.2K关注 0票数 2

不要太复杂:我想计算每个文档的边缘,并在文档中保存数字。我提出了两个可以工作的查询;不幸的是,由于我有数百万条边,所以两者都很慢。是否有一种更快捷的方法来更新具有存储边缘数量的属性的文档?(只是在某一时刻数一数)

可运行但速度慢的AQL查询:

代码语言:javascript
运行
复制
FOR doc IN Documents
    LET inEdgesCount  = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'inbound', maxDepth:1})
    LET outEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'outbound', maxDepth:1})
    UPDATE doc WITH {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents

或者:

代码语言:javascript
运行
复制
FOR e IN Edges
    COLLECT docId = e._to WITH COUNT INTO counter
    UPDATE SPLIT(docId,'/')[1] WITH {inEdgeCount: counter}

(然后对出站边缘重复)

另外,是否有任何方法查看查询速度(例如每秒执行次数)或完成百分比?我一直试图通过使用LIMITed查询来判断速度,但是所需的时间似乎并不是线性的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 14:09:10

使用ArangoDB 2.8,您可以使用图形模式匹配遍历以更好的性能执行此操作:

代码语言:javascript
运行
复制
FOR doc IN documents
  LET inEdgesCount = LENGTH(FOR v IN 1..1 INBOUND doc GRAPH 'edgeGraph' RETURN 1)
  LET outEdgesCount = LENGTH(FOR v IN 1..1 OUTBOUND doc GRAPH 'edgeGraph' RETURN 1)
  UPDATE doc WITH
     {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents

目前,ArangoDB还没有一种方法来监视长期运行的任务的进度。在ArangoDB 3.0中,我们将引入一个新的监视框架,它允许更好地检查服务器中实际发生的事情。然而,使用3.0,它将无法收集实时统计数据;今年晚些时候,我们可能会在3.x道路上看到这一点。对于像创建索引这样简单的任务,判断完成百分比可能成为可能,但是在查询中,它将是到目前为止读/写的文档的数量。

我们对验证图是否服从幂律做了类似的查询

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35946613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档