我想计算一个图中一个节点的入度和出度,给定的顶点和边集合。下面是我写的代码。UDF函数代码:
require("@arangodb/aql/functions").register(
"MYFUNCTIONS::VERTEX::INDEGREE",
function(vertex,edge, node) {
"use strict";
let db = require('@arangodb').db;
let aql = require('@arangodb').aql;
let query = aql` for t in ${edge} filter t._to == ${node} COLLECT WITH COUNT INTO length return length`;
return db._query(query).toArray();
}
);
当我调用如下所示的函数时,我得到一个错误“AQL:集合或数组应作为FOR循环的操作数;您指定了内容为“事务”的类型“字符串”(在优化ast时)
自定义项函数调用代码:'返回MYFUNCTIONS::VERTEX::INDEGREE(“账户”,“交易”,“账户/123”)');
其中Account是文档集合,Transaction是边缘集合,Account/123是图中的节点。
1条答案
按热度按时间cngwdvgl1#
您必须传递一个集合,而不是集合的名称,这样才能正常工作(请参阅此处的文档:https://www.arangodb.com/docs/stable/foxx-guides-queries.html#using-collections)
使用
db._collection(name)
获取集合,修改用户函数:一个小型工作测试示例(
testcoll
包含一个文档testdoc
):和美叫: