我有一張圖表,代表了幾個在不同城市的公交車/火車站。 假設我想從城市A(帶站點a1,a2,a3 ...)到城市Z(帶有站點z1,z2 ...)Neo4j Cypher:檢查路徑中不連續節點的屬性
假設我們要從城市A我想要得到全部路徑在開始和結束節點之間。我的成本向量在實際中會很複雜(旅行時間和等待時間以及價格和...),因此我不能使用最短路徑等。我設法編寫了一個(非常複雜)的查詢,以實現我想要的:通常它正在尋找可用的開始A和結束Z的每場比賽。
我儘量避免通過篩選出具有特殊特徵的結果來循環, G。
MATCH (from{name:'a1'}), (to{name:'z1'}),
path = (from)-[:CONNECTED_TO*0..8]->(to)
WHERE ALL(b IN NODES(path) WHERE SINGLE(c IN NODES(path) WHERE b = c))
現在我想避免可能訪問一個城市不止一次, G。而不是a1→a2→d2→d4→a3→a4→z1我想得到a1→a4→z1。
因此我必須檢查路徑中的所有節點。如果連續節點的n.city值相同,則一切正常。但是如果我得到了一個與同一城市不連續的節點的路徑, G。 cityA - > cityB - > cityA我想扔掉那條路。
我該怎麼做?有可能嗎?
我知道,這是不是真的一個美麗的方法,但我投入了相當多的時間在尋找一個更好的一個沒有丟掉整個數據結構,但我找不到一個。它只是一個原型,Neo4j不是我的焦點。我想測試一些工具和產品來建立一些知識。下次我會繼續採取更好的方法。
這是個好主意!它按預期工作。現在我只需要整合我的其他陳述。如果我遇到問題,我會再寫。非常感謝! – Stefan