我正在建模有一些层次关系(作为父母关系),但另外一些非等级关系的一组节点。neo4j密码匹配查询匹配层次关系
比方说,这是一个家庭树,以每个人的出生国的关系,为简单起见
因此,每个出生的国家是一个节点,每个人都是一个节点,我也许可以在暗号由于工作的关系:
start parent=node(123), child=node(456)
create parent-[:PARENT]->child;
和
start person=node(123), country=node(789)
create person-[:BORN_IN]->country;
我想要做的是,例如,得到乡亲们的名单没有来自英国的任何祖先谁什么,或者FOL有来自日本祖先的ks等。我觉得这应该是一个合理的查询,但我对cypher很陌生,并且不知道如何构建它。
更新** 后的情况下更广泛的测试,我发现,查询不正确的一些工作完全。鉴于一名父母来自英格兰的父母和一名不是来自英格兰的祖父母的孩子,没有任何来自英格兰的祖先的儿童的询问不正确地将该孩子带回来自英格兰的父母。它看起来像我编写查询的方式,我得到了与英格兰有NULL关系的祖父母的回报。我的查询如下:
START n=node(*), ancestor=node(123)
MATCH n-[r:PARENT*]->o-[b?:BORN_IN]->ancestor
WHERE b IS NULL
RETURN DISTINCT n;
如果所有人的祖先出生在有问题的国家,它工作正常。
谢谢,这工作完美。我的示例查询的问题最终成为我粗暴指责rel名称。 – Paul 2013-03-27 01:34:33