本文へスキップ
BecomeCoder

Neo4jコース · 第5章 データを更新する · レッスン24

プロパティを設定・更新 ― SET

ブラウザで完結

導入

既にあるノードやリレーションシップのプロパティを、後から追加したり書き換えたりするには SET を使います。

説明

MATCH (p:Person {name: 'Alice'})
SET p.born = 1990
RETURN p

このクエリは、まず MATCHAlice を見つけ、SET p.born = 1990 でその born プロパティを設定します。もし born プロパティがまだ無ければ新しく追加され、既にあれば値が上書きされます。

複数のプロパティを一度に設定することもできます。

MATCH (p:Person {name: 'Alice'})
SET p.born = 1990, p.city = 'Tokyo'

プロパティをまとめて(マップとして)渡し、既存の値にマージしたい場合は += を使います。

MATCH (p:Person {name: 'Alice'})
SET p += {born: 1990, city: 'Tokyo'}

+= を使うと、渡したマップに含まれるプロパティだけが更新(追加・上書き)され、渡さなかった既存のプロパティ(たとえば name)はそのまま残ります。これは全体をまるごと置き換えるのではなく「差分を反映する」動きなので、既存データを保ったまま一部だけ更新したい場合に便利です。

SET はラベルの追加にも使えます。

MATCH (p:Person {name: 'Alice'})
SET p:Actor

これで Alice ノードは :Person に加えて :Actor というラベルも持つようになります。1つのノードが複数のラベルを持てるのも、プロパティグラフモデルの柔軟な点です。

実際に動かしてみよう

下のエディタに Cypher を書いて「実行」を押すと、ブラウザ内の学習用グラフDBで結果が表示されます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです)。最初から「映画と俳優+小さなソーシャルグラフ」が入っているので、MATCH 系の例はそのまま結果が返ります。CREATE / MERGE / SET などで書き換えた状態は積み重なり、「グラフを初期状態に戻す」でいつでもサンプルに戻せます。

Cypher — ブラウザ内で実行(学習用グラフDB)

Cypherクエリを書いて実行できる学習用グラフDBを読み込みます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです。映画と俳優の小さなサンプルグラフが最初から入っています)。
スクロールして表示された時点でも自動で読み込まれます。