我是个新手,使用ArangoDB 3.2.5。我想在ArangoDB中检索pregel的结果。下面是一个在arangosh中的简单例子。
var pregel = require("@arangodb/pregel");
var params = {source: "Country/Tunesia"};
var execution = pregel.start("sssp", "CountryGraph", params);在文档中,它将pregel的结果转储到集合中的字段中。是否有类似以下代码的替代方法来检索结果?我在文件里找过,但没找到。顺便说一下,您可以通过加载这加载上述代码使用的dataset示例。谢谢。
var result = pregel.getResult(execution);发布于 2018-01-10 18:13:17
结果不能直接返回。但是,您有两个选择:
为了避免持久化结果,必须将store设置为false.,您可以通过函数PREGEL_RESULT(<handle>)将其设置为使用AQL访问易失性结果。
流程是这样的:
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());
}输出如下所示:
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
}
]https://stackoverflow.com/questions/48181933
复制相似问题