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