見出し画像

Neo4j GraphDBブートキャンプ完全版: SET (セクション26/49)

  • Neo4jのSET句は、ノードのラベルとプロパティ、リレーションシップのプロパティを設定するための強力なツールである。

  • SET句を使って、単一または複数のプロパティやラベルを設定、削除、コピー、データ型変更などができる。

  • SET句の様々な構文とテクニックを理解することで、グラフデータを効果的に操作できるようになる。

SET句は、Neo4jのCypherクエリ言語における強力なツールであり、ノードのラベルだけでなく、ノードとリレーションシップの両方のプロパティを設定できます。SETを効果的に使用してグラフデータを操作する方法の詳細について見ていきましょう。

ノードプロパティの設定

ノードのプロパティを設定するには、まず更新したいノードをMATCHする必要があります。たとえば、"James"という名前の人を表すノードがあるとします。次のようにしてJamesの年齢プロパティを設定できます:

MATCH (n {name: "James"})
SET n.age = 25
RETURN n.age

これにより、"James"ノードの age プロパティが25に設定され、更新された値が返されます。

複数のプロパティをまとめて設定するには、コンマで区切ります:

MATCH (n {name: "James"}) 
SET n.location = "USA", n.degree = "BSc"
RETURN n

別の構文として、プロパティをマップとして提供する方法もあります:

MATCH (n {name: "James"})
SET n = {weight: "65kg", age: 40, phone: "01564"}
RETURN n

ただし、このようにマップを使ってSETを使用すると、マップに含まれていない既存のプロパティはすべて削除されることに注意してください。

既存のプロパティを維持しつつ新しいプロパティを追加するには、SETと+=を使用します:

MATCH (n {name: "James"})
SET n += {weight: "65kg", age: 40, phone: "01564"}
RETURN n

1つのプロパティを削除するには、それをnullに設定します:

MATCH (n {name: "Jacob"})  
SET n.age = null
RETURN properties(n)

ノードからすべてのプロパティを削除するには:

MATCH (n {name: "Jacob"})
SET n = {} 
RETURN properties(n)

ノードへのラベルの設定

ノードへのラベルの追加もSETを使用して行います。単一のラベルを設定するには:

MATCH (n {name: "Luke"})
SET n :Person
RETURN labels(n)

一度に複数のラベルを設定するには:

MATCH (n {name: "Luke"})
SET n :Actor:Director:Producer
RETURN labels(n)

これにより、"Luke"ノードに Actor、Director、Producer のラベルが追加されます。

プロパティの型の変更

SETをtoString、toIntegerなどの関数と一緒に使うと、プロパティのデータ型を変更できます。

たとえば、数値の給与プロパティを文字列に変換するには:

MATCH (n {name: "K"})
SET n.salary = toString(n.salary)
RETURN n.salary  

そして、それを整数に戻すには:

MATCH (n {name: "K"})
SET n.salary = toInteger(n.salary)
RETURN n.salary

プロパティとリレーションシップのコピー

SETは、あるノードのすべてのプロパティを別のノードにコピーするためにも使用できます:

MATCH (a {name: "A"}), (b {name: "B"})
SET b = a
RETURN properties(b)

これにより、Bのプロパティがすべて Aのもので置き換えられます。

同様に、リレーションシップをコピーすることもできます:

MATCH ({name: "A"})-[r1]->({name: "B"}),
      ({name: "C"})-[r2]->({name: "D"})
SET r2 = r1
RETURN properties(r2)

これにより、AとBの間のリレーションシップのすべてのプロパティが、CとDの間のリレーションシップにコピーされます。

結論

SET句は、Neo4jのノードとリレーションシップ上のプロパティとラベルを管理するための柔軟な方法を提供します。ここで説明したさまざまな構文とテクニックを理解することで、グラフデータをニーズに合わせて効果的に操作できるようになるでしょう。

「超本当にドラゴン」へ

この記事が気に入ったらサポートをしてみませんか?