LoginSignup
1
0

More than 3 years have passed since last update.

Neo4jでプロパティの上限と下限を設ける

Posted at

値の上限と下限

Neo4jを使っていると、ラベルNodeのプロパティyearは必ず1900~2100以内を保っていてほしいな〜〜
といった、プロパティの下限と上限を定めたいときがあります。

Neo4jの性質上、各ノードごとにそのような制約を作ることはできませんが、上限と下限からはみ出していたら強制的に丸め込むということは可能です。

値の丸め込み

以下のような句法を利用します。

MATCH ()-[r:Link]->() SET r.pheromone = CASE WHEN r.pheromone <1.0 THEN 1.0 WHEN r.pheromone > 3.0 THEN 3.0  ELSE r.pheromone end

まず、MATCHで値の上限と下限を求めたいオブジェクト集合を取り出します。
その後、SET構文で値の再設定を行います。

ただし、下限や上限をはみ出していた場合強制的に丸め込みたいため、
CASE文を使い

  1. WHEN lower_valueよりも下回っているなら lower_valueを設定する
  2. WHEN upper_valueよりも上回っているなら upper_valueを設定する
  3. 1, 2でないなら上限と下限の内側のため、そのままのオリジナルの値を返す

を行えば、値の丸め込みを行えます。

最後に

Neo4jはまだ三日ほどしか使っておらず、完全に雰囲気でしか使えていません。(複雑なものは一切知りません...)
間違っている部分がありましたら、ご指摘いただけるとありがたいです!

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0