對不起,對於標題。我找不到更好的。我的問題很難用言語解釋,所以我會試着舉個例子。假設我有一個名爲「FOO」的關係,「FOO」有兩個名爲「id」和「bar」的屬性。Neo4j查詢 - 一個屬性與另一個屬性分組的任何關係中的值不相等的關係
而且有這樣一個圖:
(n1)-[:FOO {id: "1", bar:"8"}]->(n2)-[:FOO {id: "1", bar:"27"}]->(n3)-[:FOO {id: "1", bar:"50"}]->(n4)
(m1)-[:FOO {id: "4", bar:"2"}]->(m2)-[:FOO {id: "4", bar:"12"}]->(n2)-[:FOO {id: "4", bar:"25"}]->(m3)
(n1)-[:FOO {id: "7", bar:"11"}]->(m2)-[:FOO {id: "7", bar:"50"}]->(o3)-[:FOO {id: "7", bar:"14"}]->(o5)
等等......
我想要做的就是讓對(有關這些ID或節點和關係)的所有ID關係系列沒有任何「欄中的」屬性等於50
在上述曲線圖中,結果我想是第二個,ID:「4」:
(m1)-[:FOO {id: "4", bar:"2"}]->(m2)-[:FOO {id: "4", bar:"12"}]->(m3)-[:FOO {id: "4", bar:"25"}]->(m3)
加上這個查詢如何獲得關係系列的最後關係欄屬性不等於50的所有id(或節點和與這些id相關的關係)。在這一個中,我想得到是第一和第三個,ID: 「4」和ID: 「7」:
(m1)-[:FOO {id: "4", bar:"2"}]->(m2)-[:FOO {id: "4", bar:"12"}]->(n2)-[:FOO {id: "4", bar:"25"}]->(m3)
(n1)-[:FOO {id: "7", bar:"11"}]->(m2)-[:FOO {id: "7", bar:"50"}]->(o3)-[:FOO {id: "7", bar:"14"}]->(o5)
謝謝。 圖中有許多id。我無法像你寫的那樣手動給他們。有沒有另一種方式呢? 也可能有比3更多的關係。有沒有辦法獲得路徑,無論它包含多少關係? – nulladex
查看上面的編輯以傳入不同的ID。至於'*'表示法,請查看[here](http://neo4j.com/docs/developer-manual/3.0/cypher/#_variable_length)。 –
'MATCH() - [r:FOO] - () WITH r。id AS r_id WITH COLLECT(DISTINCT r_id)AS rel_ids UNWIND rel_ids AS rel_id MATCH path =() - [:FOO {id:rel_id}] - >() WHERE NOT ANY(x IN關係(路徑)WHERE x .bar = 50) 返回關係(路徑)[0] ['id']' 我試過這個查詢,但是「WHERE NOT ANY」部分沒有做任何事情。結果是相同的或不相同。 – nulladex