首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索ArangoDB的结果?

如何检索ArangoDB的结果?
EN

Stack Overflow用户
提问于 2018-01-10 07:02:07
回答 1查看 409关注 0票数 0

我是个新手,使用ArangoDB 3.2.5。我想在ArangoDB中检索pregel的结果。下面是一个在arangosh中的简单例子。

代码语言:javascript
复制
var pregel = require("@arangodb/pregel");
var params = {source: "Country/Tunesia"};
var execution = pregel.start("sssp", "CountryGraph", params);

在文档中,它将pregel的结果转储到集合中的字段中。是否有类似以下代码的替代方法来检索结果?我在文件里找过,但没找到。顺便说一下,您可以通过加载加载上述代码使用的dataset示例。谢谢。

代码语言:javascript
复制
var result = pregel.getResult(execution);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 18:13:17

结果不能直接返回。但是,您有两个选择:

  • 让ArangoDB将Pregel结果写入文档
  • 不要存储结果,而是将其暂时保存在内存中。

为了避免持久化结果,必须将store设置为false.,您可以通过函数PREGEL_RESULT(<handle>)将其设置为使用AQL访问易失性结果

流程是这样的:

  1. 启动Pregel执行
  2. 检查状态,直到更改为“已完成”或“已取消”为止。
  3. 如果Pregel成功,执行AQL查询以访问结果
代码语言:javascript
复制
var pregel = require("@arangodb/pregel");
var params = {source: "Country/Algeria", store: false};
var handle = pregel.start("sssp", "CountryGraph", params);

while (!["done", "canceled"].includes(pregel.status(handle).state)) {
  print("waiting for result");
  require("internal").wait(0.5); // TODO: make this more clever
}

var status = pregel.status(handle);
print(status);

if (status.state == "done") {
  var query = db._query("FOR doc IN PREGEL_RESULT(@handle) RETURN doc", {handle: handle});
  print(query.toArray());
}

输出如下所示:

代码语言:javascript
复制
shell>arangosh --javascript.execute pregel.js

waiting for result

{
  "state" : "done",
  "gss" : 2,
  "totalRuntime" : 0.00583648681640625,
  "aggregators" : {
  },
  "sendCount" : 1,
  "receivedCount" : 1,
  "vertexCount" : 10,
  "edgeCount" : 8,
  "code" : 200
}

[
  {
    "_key" : "Germany",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Switzerland",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Brasil",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Marocco",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Argentina",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Austria",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Algeria",
    "result" : 0
  },
  {
    "_key" : "Uruguay",
    "result" : 9223372036854776000
  },
  {
    "_key" : "Tunesia",
    "result" : 1
  },
  {
    "_key" : "Australia",
    "result" : 9223372036854776000
  }
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48181933

复制
相关文章

相似问题

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