Graph ArangoDB:有可能';假';图遍历中的边?

Graph ArangoDB:有可能';假';图遍历中的边?,graph,arangodb,Graph,Arangodb,我有一张复杂的图表。我正在使用一个遍历(通过ArangoJS),它还具有相当复杂的expanderFunction和traversalVisitor 对于这个遍历,我想知道是否有可能在我的图中的一些节点之间创建动态关系(或伪关系):也就是说,基于顶点中的一些属性,让遍历继续进行图探索,就好像当前顶点和另一个顶点之间有一条边一样 我试图欺骗expander函数,将假边(从当前顶点到图中另一个不相关的顶点)推到遍历数据结构中,例如: if (complex_criteria(vertex)) {

我有一张复杂的图表。我正在使用一个遍历(通过ArangoJS),它还具有相当复杂的expanderFunction和traversalVisitor

对于这个遍历,我想知道是否有可能在我的图中的一些节点之间创建动态关系(或伪关系):也就是说,基于顶点中的一些属性,让遍历继续进行图探索,就好像当前顶点和另一个顶点之间有一条边一样

我试图欺骗expander函数,将假边(从当前顶点到图中另一个不相关的顶点)推到遍历数据结构中,例如:

if (complex_criteria(vertex)) {
    var unconnectedVertexId = ... 
    var unconnectedVertex = someCollection.document(unconnectedVertexId);
    connected.push({ edge:{_id:'newId', _from:vertex._id, _to:unconnectedVertex._id}, vertex: unconnectedVertex });
}
..
return connected;
这不起作用。(遍历选项为:方向:“出站”,策略:“深度优先”)

还有更好的主意吗


谢谢

我认为您的代码中有一个小错误:

if (complex_criteria(vertex)) {
    var unconnectedVertexId = ... 
    var unconnectedVertex = someCollection.document(unconnectedVertexId);
    connected.push({ edge:{_id:'newId', _from:vertex._id, _to:unconnectedVertex._id}, vertex: unconnectedVertex });
}
..
return connected;
“伪边”必须指向未连接的顶点,而不是对象本身。
您能检查一下这是否已经解决了问题吗?

我认为您的代码中有一个小错误:

if (complex_criteria(vertex)) {
    var unconnectedVertexId = ... 
    var unconnectedVertex = someCollection.document(unconnectedVertexId);
    connected.push({ edge:{_id:'newId', _from:vertex._id, _to:unconnectedVertex._id}, vertex: unconnectedVertex });
}
..
return connected;
“伪边”必须指向未连接的顶点,而不是对象本身。
你能检查一下这是否已经解决了问题吗?

\u id:这已经在我的测试用例中了。为清晰起见,更改上述变量名称时出错。我已经纠正了这个问题。你知道在ArangoDB代码中我在哪里可以看到扩展器中连接的数据结构是如何使用的吗?我认为以后使用此数据结构的方式可能存在一些限制…(例如,可能尝试从不存在的边缘id获取边缘?)可能会有所帮助。。干杯您要查找的文件是当前devel分支中的
js/common/modules/@arangodb/graph/traversal.js
,或者
js/common/modules/org/arangodb/graph/traversal.js
3
调用
config.expander
,这些都是相关的地方。从我看到的情况来看,在内置函数“expander”之后,边缘没有得到验证。可能
\u id
在某个地方进行了内部评估,因此请确保它至少看起来是正确的。未连接的顶点已验证,如果arango不知道id,则未连接的顶点将为null,并可能导致问题。我已从遍历选项中取消了“方向”属性。(文档目前对此不清楚,说明“如果未设置方向属性,则必须设置扩展器”)解释是否回答了您的问题?如果是,您能将其标记为已接受吗?如果没有,缺少什么?\u id:这已经在我的测试用例中了。为清晰起见,更改上述变量名称时出错。我已经纠正了这个问题。你知道在ArangoDB代码中我在哪里可以看到扩展器中连接的数据结构是如何使用的吗?我认为以后使用此数据结构的方式可能存在一些限制…(例如,可能尝试从不存在的边缘id获取边缘?)可能会有所帮助。。干杯您要查找的文件是当前devel分支中的
js/common/modules/@arangodb/graph/traversal.js
,或者
js/common/modules/org/arangodb/graph/traversal.js
3
调用
config.expander
,这些都是相关的地方。从我看到的情况来看,在内置函数“expander”之后,边缘没有得到验证。可能
\u id
在某个地方进行了内部评估,因此请确保它至少看起来是正确的。未连接的顶点已验证,如果arango不知道id,则未连接的顶点将为null,并可能导致问题。我已从遍历选项中取消了“方向”属性。(文档目前对此不清楚,说明“如果未设置方向属性,则必须设置扩展器”)解释是否回答了您的问题?如果是,您能将其标记为已接受吗?如果没有,缺少什么?