我正在尝试学习neo4j,并打算从雇员的基本员工/雇主例子开始,除非在树顶部,否则员工拥有经理。如何在neo4j中返回节点和树顶部之间的节点
我的结构看起来像employee-> MANAGEDBY-> manager-> MANAGEDBY-> manager-> MANAGEDBY-> manager。然而,每个经理可以有多个雇员或经理在他们下面。
我想要做的是获得一个员工和主要老板之间的所有经理名单(ceo/president/whatever)。
起初,我开始了与这样的
MATCH(baseEmployee {Name: 'Josh'})-[:MANAGEDBY*0..]-(managers)
RETURN managers.Name;
查询这似乎不仅显示我的经理和他/她的经理等等,但它似乎也告诉大家,他们管理当我想要什么露面就像
Josh,
Boss,
BossBoss,
BossBossBoss,
CEO
经过一番搜索和一些运气,我设法获得通过使用下面的查询
MATCH p=(baseEmployee {Name: 'Josh'})-[:MANAGEDBY*0..]-(managers)
WHERE NOT(managers-[:MANAGEDBY]->())
RETURN p;
接近列表
我只是在学习neo4j,所以我对这里发生的事情的最好猜测是我从自己得到了第一位没有MANAGEDBY关系的经理的路径。我的问题是,这返回一个路径,我宁愿只是有一个经理名单。
是否有可能做到这一点,而不做p =查询?
我不知道你可以指定关系的方向。我认为像MATCH(baseEmployee {Name:'Josh'}) - [:MANAGEDBY * 0 ..] - >(managers) RETURN managers.Name;从我到树的最高层,它完全符合我的需求,似乎只包括树中的父母,并且从不向下遍历 – Josh 2014-10-11 22:44:45