データベースにはPerson
というラベルがあり、ノードにはプロパティー:firstname, gender, lastname, id
が含まれています。Neo4j MERGEは既存ノードを使用する代わりに新しいノードを作成します
私のような関係情報が含まれたCSVファイルを持っている:私が何をしようとしています何
id sibling
1 3,4,5
はid
とsibling
列の値との間の関係を作成することです。
私はそうするために、次のコードを使用しています:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///relationship.csv' AS line1
WITH line1, split(line1.sibling, ",") as siblings
UNWIND siblings as sibling
MERGE (p:Person{id:line1.id})
MERGE (k:Person{id:sibling})
MERGE (p)-[:SIBLING_OF]->(k)
をこのアプローチではなく、データベースにすでに存在するノードを接続するだけid
プロパティを持つ新しいノードを作成します。
私はこのクエリを使用するときに奇妙なことがある:
MATCH (p:Person)
WHERE p.id='123'
RETURN p
それは新しく作成されずに、(ID、ファーストネーム、性別、姓とidプロパティを含む)、データベースにあらかじめたノードだけを返します関係が、私のような、関係を持つノードを返すようにしようとしたときにのみ:id
性質を持って、新しく作成されたk
ノードが返される
MATCH (p:Person)-[SIBLING_OF]-(k:Person)
WHERE p.id='123
RETURN p,k
。
誰かが私が質問に間違っていることを知っていますか?
提案したように、問題はCSVファイルの空白です。それを削除すると問題が解決しました。クエリを使用して、新しい空のノードとの関係が作成されました(プロパティはありません)。私が提供したクエリを使用して作業を行いました。 – Porjaz
申し訳ありません - 空ノードを引き起こした 'WITH'節から' p'を不用意に残しました。あなたのバージョンは本当に不必要に 'id'カラムのために複数回(各兄弟のために)一度だけ必要とするときにマッチします。 –