我使用图数据库Neo4J建模了一棵有向树结构,类似于这样:http://ouwarovite.net/YAPC/220px-Binary_tree.svg.png (不一定是二叉树)。
我的数据库用户可以随意添加现有节点的子节点,因此树的高度和单个节点的度数是未知的。
现在,我想要这样查询我的树:从节点x开始,给我所有是节点x后代的叶子节点。
是否可以在Gremlin或Cypher中执行这种类型的查询,并且如果可以,如何实现最大性能?(我没有找到在“通用”树上执行查询的可能性,因为您总是必须指定最大深度)
我知道,可以通过REST / JSON框架和JAVA API实现此目的:
我的数据库用户可以随意添加现有节点的子节点,因此树的高度和单个节点的度数是未知的。
现在,我想要这样查询我的树:从节点x开始,给我所有是节点x后代的叶子节点。
是否可以在Gremlin或Cypher中执行这种类型的查询,并且如果可以,如何实现最大性能?(我没有找到在“通用”树上执行查询的可能性,因为您总是必须指定最大深度)
我知道,可以通过REST / JSON框架和JAVA API实现此目的:
POST /db/data/node/51/traverse/node
{
"return_filter" :
{
"body" : "position.endNode().hasProperty('leave')" ,
"language" : "javascript"
},
"relationships" : [ { "type" : "_default", "direction" : "out" } ] ,
"prune_evaluator" : { "name" : "none" , "language" : "builtin" }
}
我的叶子节点具有“leave”属性,我的边缘没有类型 -> 因此使用了默认值。
是否有更简单/更好的方法来完成这个任务并提高性能?