1
我有一个neo4j密码遍历问题。根据关系参数排除关系
设置: 我有一个查询,在节点“a”开始,并给我所有与关系“FOO”的路径。所有这些“FOO”关系都有一个参数“BAR”。参数“BAR”可以有2个(或更多)值“1”和“2”。现在我想排除包含一个或多个FOO.BAR =“2”关系的所有路径。
查询:START a = node(x)MATCH a- [rh:FOO *] - > b RETURN rh; rh给了我所有可能的路径,但我不知道如何添加关系的标准。
我在控制台(http://console.neo4j.org/?id=219eub)
create (a {name:"A"}), (b {name:"B"}), (c {name:"C"}), (d {name:"D"}), b-[:FOO{BAR:'1'}]->a, d-[:FOO{BAR:'1'}]->a, c-[:FOO{BAR:'2'}]->b, d-[:FOO{BAR:'1'}]->c START n=node(4) MATCH n-[rh:FOO*]-b RETURN rh;
创建方案这给了我 查询结果
+---------------------------------------------------------------------------+ | n.name | rh | b.name | +---------------------------------------------------------------------------+ | "D" | [:FOO[2] {BAR:"1"}] | "A" | | "D" | [:FOO[3] {BAR:"1"}] | "C" | | "D" | [:FOO[3] {BAR:"1"},:FOO[1] {BAR:"2"}] | "B" | | "D" | [:FOO[3] {BAR:"1"},:FOO[1] {BAR:"2"},:FOO[0] {BAR:"1"}] | "A" | +---------------------------------------------------------------------------+
但我只想
+---------------------------------------------------------------------------+ | n.name | rh | b.name | +---------------------------------------------------------------------------+ | "D" | [:FOO[2] {BAR:"1"}] | "A" | | "D" | [:FOO[3] {BAR:"1"}] | "C" | +---------------------------------------------------------------------------+
解决了,pff,我觉得这样的noob。当你看到sollution它是sooo deuh ;-)我必须承认,谓词函数和使用/嵌套WHERE是一些习惯(我不是)。谢谢Stefan,你让我的一天。 – steven 2013-03-11 12:38:08
最大的区别在于'rh'是一个可变长度路径中的集合,与正常匹配的单个关系相比。 – 2013-03-11 13:59:12
用'WHERE rh.BAR = 1'而不是上面的过滤器过滤有什么区别? – ulkas 2013-03-12 08:31:18