我期待在Neo4j密碼中執行設置操作。基本上我有兩個方向上的一組節點的關係,我想只找到一方與所有那些節點有關係的節點。Neo4j密碼設置操作在哪裏條款
鑑於類似如下的圖表:
/----- b1 -\
/ \
a ------ b2 --c1
\ \/
\ /\
\---- b3 --c2
我只想c1
退換,如c2
確實與b1
而a
確實有直接的關係。
我期待在Neo4j密碼中執行設置操作。基本上我有兩個方向上的一組節點的關係,我想只找到一方與所有那些節點有關係的節點。Neo4j密碼設置操作在哪裏條款
鑑於類似如下的圖表:
/----- b1 -\
/ \
a ------ b2 --c1
\ \/
\ /\
\---- b3 --c2
我只想c1
退換,如c2
確實與b1
而a
確實有直接的關係。
我有一個解決方案,似乎工作,但我不知道它是否是最佳的。
match (a:A)--(b:B)
with a, count(b) as bCount1
match (a)--(b:B)--(c:C)
with c, bCount1, count(b) AS bCount2
where bCount1 = bCount2
return c
你可以使用標籤來表示節點在一個集合或另一個集合(假設它們是互斥的)。我還假設節點「a」是根節點和/或不需要直接連接到「c1」或「c2」。
在你上面的ASCII藝術例子,假設「B1」具有「SET1」標籤和其他所有的「集2」,這樣的事情可能工作:
MATCH (n:Set2)--(o:Set1), (allS1:Set1)
WHERE length(collect(o)) = count(allS1)
WITH n, length(collect(o))
RETURN n
...或其變形。再次,這是假設你一次只做一套。兩者都不應該花費太多的努力。它也可能不是最有效的,但它應該做的伎倆。給它一個鏡頭,讓我們知道。
HTH,和往常一樣,如果有更好的方法來做到這一點(因爲那裏可能很好),讓我們看看這些答案!