Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j遍历_Neo4j_Traversal - Fatal编程技术网

Neo4j遍历

Neo4j遍历,neo4j,traversal,Neo4j,Traversal,我有两个问题 1.如果我有下面这样的图表 A->B->C->D A->B->C->E 我的要求是获取路径(从起点到终点),这样我就可以遍历节点并根据条件执行一些操作 我使用遍历描述和唯一性选项,如下所示。 TraversalDescription td=Traversal.description() .关系(了解、指导、外向) .唯一性(唯一性.节点\路径) .evaluator(evaluator.excludeStartPosition()) 我期待下面的结果 A->B->C->D A->B

我有两个问题

1.如果我有下面这样的图表

A->B->C->D

A->B->C->E

我的要求是获取路径(从起点到终点),这样我就可以遍历节点并根据条件执行一些操作

我使用遍历描述和唯一性选项,如下所示。 TraversalDescription td=Traversal.description() .关系(了解、指导、外向) .唯一性(唯一性.节点\路径) .evaluator(evaluator.excludeStartPosition())

我期待下面的结果

A->B->C->D

A->B->C->E

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

A->B

A->B->C

A->B->C->D

A->B->C->E

2.清理不再需要的旧节点(基于时间戳)最有效的方法是什么?我有两个选择 1.从头到尾遍历节点,收集可以删除的节点ID。然后循环浏览列表并删除节点及其关系/节点 2.用于删除与日期条件匹配的节点和关系的密码查询

提前多谢

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

//对于A->B->C->D 评估者:深度(3)

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


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

你能发布你的代码吗?@BtySgtMajor-请查看我的原始帖子,其中添加了遍历描述的代码。提前谢谢!要获得cypher中的最长路径,请查看以下问题:感谢Mattias Persson花时间回答。目前,我正在使用节点的关系手动遍历该节点,以避免多次遍历同一节点。有没有其他有效的方法来遍历节点?