2014-05-12 18 views
0

我期待在Neo4j密碼中執行設置操作。基本上我有兩個方向上的一組節點的關係,我想只找到一方與所有那些節點有關係的節點。Neo4j密碼設置操作在哪裏條款

鑑於類似如下的圖表:

/----- b1 -\ 
/   \ 
a ------ b2 --c1 
\   \/ 
    \   /\ 
    \---- b3 --c2  

我只想c1退換,如c2確實與b1a確實有直接的關係。

回答

0

我有一個解決方案,似乎工作,但我不知道它是否是最佳的。

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 
0

你可以使用標籤來表示節點在一個集合或另一個集合(假設它們是互斥的)。我還假設節點「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,和往常一樣,如果有更好的方法來做到這一點(因爲那裏可能很好),讓我們看看這些答案!