我使用图形数据库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" }
}
(我的叶子有属性'离开',我的边缘没有类型 - >所以_default)
是否有更简单/更好的方法可以提高性能?
答案 0 :(得分:4)
Cypher看起来像这样:
start root=node({rootId})
match root-[*]->child
where child.leave
return child
rootId
是要传入的参数。