2016-04-07 15 views
1

次の関係がneo4jに格納されているとします。neo4jの他の関係に基づいて関係を作成しますか?

A->B,A->D,C->B,C->E 

ここで、A、Cは同じラベルノードであり、B、Eも同じラベルノードである。 共通のノードAとCの数をカウントするcypherクエリは何ですか? 私はAとCの関係にしたいと思っています。私はそれらの間に関係ランクを追加したいと思います。そのクエリはどのように見えますか?

答えて

0

一方にC中間ノードと他を有するパターンマッチとC 間の共通ノードの数を返すこと。次に、仲介ノードの出現を数えます。

match (:TypeOne {name: 'A'})--(common)--(:TypeOne {name: 'C'}) 
return count(common) 

あなたが試合の結果としてCの間に直接の関係を作成したい場合は、Cmergeまたはcreateを使用ノード。そして、setを使用して、新しく作成された関係に値を追加します。

あなたの要件を満たす必要があります。

match (a:TypeOne {name: 'A'})--(common)--(c:TypeOne {name: 'C'}) 
with a, c, count(common) as in_common 
merge (a)-[rel:COMMON_WITH]->(c) 
set rel.value = in_common * 0.5 
return * 
+0

が、私はcsvファイルを持っていると同じタイプAの異なるノードがあると仮定し、Cはその後、私は、クエリがどうあるべきかthem.Then間の共通ノードによると、これらすべてのノード間の関係を作る必要がありますか? –

+0

私は、csvファイルの各行に、探している2つのノードのキー(または何らかの識別子)が含まれていると想定します。上記のクエリの** 'A' **と** 'C' **の一致は、探している実際のノード(例:line.a_nodeとline.c_node)に置き換えます。 –

関連する問題