Graph ArangoDB:仅在时间范围内遍历边

Graph ArangoDB:仅在时间范围内遍历边,graph,arangodb,Graph,Arangodb,我正在试验。 我创建了一个顶点,该顶点连接到其他顶点,该边位于一侧: { "_id": "edges/426647569364", "_key": "426647569364", "_rev": "426647569364", "_from": "nodes/426640688084", "_to": "nodes/426629284820", "valid_from": "1385787600000", "valid_till": "9007199254740991

我正在试验。 我创建了一个顶点,该顶点连接到其他顶点,该边位于一侧:

{
  "_id": "edges/426647569364",
  "_key": "426647569364",
  "_rev": "426647569364",
  "_from": "nodes/426640688084",
  "_to": "nodes/426629284820",
  "valid_from": "1385787600000",
  "valid_till": "9007199254740991"
}
另一方面,这一优势:

{
  "_id": "edges/426679485396",
  "_key": "426679485396",
  "_rev": "426845488084",
  "_from": "nodes/426675749844",
  "_to": "nodes/426629284820",
  "valid_from": "1322629200000",
  "valid_till": "1417323600000"
}
第一条边中的有效值是
Number.MAX\u SAFE\u INTEGER
函数的输出

我看了一点,它似乎专注于过滤顶点而不是边


如何将遍历限制为具有介于
new Date().getTime()
Number.MAX\u SAFE\u INTEGER
之间的有效\u till值的边?

您可以在遍历中使用
followEdges
属性。
followEdges
也可以是一个用于过滤边的JavaScript函数。将为遍历中的每条边调用它:

var expandFilter = function (config, vertex, edge, path) { 
  return (edge.vaild_till >= new Date().getTime() && 
          edge.valid_till <= Number.MAX_SAFE_INTEGER);

};

require("org/arangodb/aql/functions").register("my::expandFilter", expandFilter);
LET options = { 
   followEdges: 'my::expandFilter' 
}
FOR doc IN TRAVERSAL(nodes, edges, 'nodes/startNode', 'inbound', options) 
  RETURN doc.vertex