我正在尋找一種有效的方式來做Neo4j中的injective匹配。如果你不確定我的意思,我只想在比賽中每個返回的節點都是唯一的(例如具有唯一ID)的情況下返回匹配,並且路徑同樣適用。Neo4j中的內射匹配
使用維基百科(上圖),域,X,匹配的是在圖案中的節點和路徑,並且所述共域,Y的圖,是數據庫的內部圖形。上圖是從X點到Y中的同一元素(因此模式中沒有2個節點與圖中的同一個節點相匹配,同樣適用於邊),因此沒有2個箭頭,而默認的Neo4J匹配是非-injective並允許模式中的2個節點與Graph中的同一節點進行匹配(您可以看到非內射匹配的示例,如上圖中指向D中Y的箭頭從X中的1和2開始) 。傳統圖論將調用匹配來自域X的多個項目到共域Y「合併」中的相同項目,但是我可以理解,在這種情況下該術語可能會令人困惑。
我可以通過指定匹配的節點是不同的模擬這種特定查詢:
match (a), (b) where not id(a) = id(b) return a, b
但我想這樣做在一般意義上,而不必是這樣明確的在每個查詢。因此,對於這個例子,我想返回匹配,其中(a)和(b)是獨特的節點,但我想用一些常規行爲來做到這一點,而不是基於ID指定唯一性。
當我查詢時,似乎路徑已經保證是唯一的,但是如果有人能確認那會很好。
不知道爲什麼人們downvoting這 –
我想一個原因是,您使用的是一些術語中的Neo4j已經使用並意味着不同的事情。例如,對於熟悉Neo4j術語「合併」的人來說,「在哪裏匹配的節點和路徑未合併」相當混亂(在Neo4j中,MERGE是創建或匹配圖元素,如果它存在,MATCH如果不是,則創建)。你能用不同的術語來描述這個需求嗎? – InverseFalcon
@InverseFalcon一個公平的評論,我能想到的唯一的術語是,匹配的節點和路徑是唯一的(獨特會起作用,但很明顯用於查詢中的不同目的)。 –