我使用图形数据库 Neo4J 对有向树结构进行了建模。所以我有这样的东西:http: //ouwarovite.net/YAPC/220px-Binary_tree.svg.png(非强制性二进制)
我的数据库的用户可以随意添加已有节点的子节点,所以树的高度和单个节点的度数是未知的。
现在,我想像这样查询我的树:从节点 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',我的边缘没有类型->所以_default)
有没有更简单/更好的方法来做到这一点,也许性能更好?