Neo4j Traversal

时间:2014-05-07 18:30:10

标签: neo4j traversal

我有两个问题

1.如果我有如下图表

A-> B-> C-> d

A-> B-> C-&GT,E

我的要求是获取路径(从最开始),以便我可以遍历节点并根据标准执行某些操作。

我使用具有唯一性的遍历描述选项如下所示。     TraversalDescription td = Traversal.description()                 .relationships(KNOWS,Direction.OUTGOING)                 .uniqueness(Uniqueness.NODE_PATH)                 .evaluator(Evaluators.excludeStartPosition());

我期待以下结果

A-> B-> C-> d

A-> B-> C-&GT,E

但我得到了以下结果。我尝试了NODE_PATH和NODE_GLOBAL。

A->乙

A-> B-&以及c

A-> B-> C-> d

A-> B-> C-&GT,E

2.清除不再需要的旧节点(基于时间戳)的最有效方法是什么?我有2个选择     1.从开始到结束遍历节点并收集可以删除的节点ID。然后遍历列表并删除节点及其关系/节点     2. Cypher-query删除与日期条件匹配的节点和关系

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

回答(1)唯一性控制在遍历期间(重新)访问哪些节点/关系。但是,它不能控制哪些路径返回到Path迭代器。您必须在Evaluator中编码的行为。在您的情况下,它可以是基于路径长度或端节点上的特定标准的评估器,例如:

//对于A-> B-> C-> D Evaluators.atDepth(3)

//用于返回末端节点具有属性的路径" bla" 新的Evaluator(){     公共评估评估(路径路径){         return Evaluation.ofIncludes(path.endNode()。hasProperty(" bla"));     } }

不幸的是,没有内置的方法只能获得它在每个分支中访问的最长路径。实际上这将是一个很好的功能。