java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

10. NEO4j CQL SET

NEO4j CQL SET使用简介

set语法用来修改节点和关系上的标签或者属性,这个修改包含了增加一个标签或者属性

创建两个个人,张三,李四

CREATE (:Person {name: '张三', age: 20})
CREATE (:Person {name: '李四', age: 25, worked: 'Google' })
CREATE (:Person {name: '王五', age: 26, hair: 'Short' })
CREATE (:Person {name: '赵六', age: 31})

NEO4j CQL SET 增加一个属性

MATCH (n {name: '张三'}) SET n.sex = '男' RETURN n.name, n.sex

│"n.name"│"n.sex"│
╞════════╪═══════╡
│"张三"    │"男"    │

条件匹配当年龄为20,那么设置他在大学读书

MATCH (n {name: '张三'}) SET (CASE WHEN n.age = 20 THEN n END).inSchool = true RETURN n.name, n.inSchool

╒════════╤════════════╕
│"n.name"│"n.inSchool"│
╞════════╪════════════╡
│"张三"    │true    

当条件无法匹配成功,那么设置失败,如果他60,那么退休

MATCH (n {name: '张三'}) SET (CASE WHEN n.age = 60 THEN n END).retire = true RETURN n.name, n.retire
╒════════╤══════════╕
│"n.name"│"n.retire"│
╞════════╪══════════╡
│"张三"    │null   

NEO4j CQL SET 修改一个属性

MATCH (n {name: '张三'}) SET n.age = n.age + 1 RETURN n.name, n.age

╒════════╤═══════╕
│"n.name"│"n.age"│
╞════════╪═══════╡
│"张三"   │21     │
└────────┴───────┘

NEO4j CQL SET 移除一个属性

MATCH (n {name: '张三'}) SET n.age = null RETURN n.name, n.age

════════╤═══════╕
│"n.name"│"n.age"│
╞════════╪═══════╡
│"张三"    │null   │
└────────┴───────┘

NEO4j CQL SET 从一个节点复制属性到另一个节点

MATCH  (ww {name: '王五'}),  (ls {name: '李四'}) SET ww = ls RETURN ww.name, ww.age, ww.hair, ww.worked, ls.name, ls.age
"ww.name"│"ww.age"│"ww.hair"│"ww.worked"│"ls.name"│"ls.age"│
╞═════════╪════════╪═════════╪═══════════╪═════════╪════════╡
│"李四"     │25      │null     │"Google"   │"李四"     │25      │
└─────────┴────────┴─────────┴───────────┴─────────┴────────┘

设置以后王五的名字变成了李四,王五的年龄变成了李四的年龄,王五的头发属性不见了, 王五获取了新属性工作在Google

NEO4j CQL SET 使用map结构来复制全部属性,当用了=进行赋值,会删除p之前的属性age

MATCH (p {name: '赵六'})
SET p = {name: '赵云', nickname: '赵子龙'}
RETURN p.name, p.age, p.nickname

╒════════╤═══════╤════════════╕
│"p.name"│"p.age"│"p.nickname"│
╞════════╪═══════╪════════════╡
│"赵云"    │null   │"赵子龙"       │
└────────┴───────┴────────────┘

NEO4j CQL SET 使用空map进行=符号赋值来移除属性

MATCH (p {name: '赵云'}) SET p = {} RETURN p.name, p.age, p.nickname

╒════════╤═══════╤════════════╕
│"p.name"│"p.age"│"p.nickname"│
╞════════╪═══════╪════════════╡
│null    │null   │null        │
└────────┴───────┴────────────┘

NEO4j CQL SET 使用+=追加属性

创建个赵云

CREATE (:Person {name: '赵云', age: 31})
MATCH (p {name: '赵云'}) SET p += {age: 38, company: '刘备集团'} RETURN p.name, p.age, p.company

╒════════╤═══════╤═══════════╕
│"p.name"│"p.age"│"p.company"│
╞════════╪═══════╪═══════════╡
│"赵云"    │38     │"刘备集团"     │
  • 任何在map里,在节点或者关系没有的属性,会被追加

  • 任何不在map里,但在节点和关系的属性会被继续保留

  • 任何在map里,也在节点和关系里的属性,会被替换

    一个空的map的使用+= 不会起任何作用

MATCH (p {name: '赵云'}) SET p += {} RETURN p.name, p.age

NEO4j CQL SET 设置多个属性

MATCH (n {name: '赵云'}) SET n.nickname = '子龙', n.son = '赵广'

使用参数进行设置

浏览器输入以下参数设置命令

:params 
{
  "inwar" : "长坂坡之战"
}
MATCH (n {name: '赵云'}) SET n.inwar = $inwar RETURN n.name, n.inwar
╒════════╤═════════╕
│"n.name"│"n.inwar"│
╞════════╪═════════╡
│"赵云"    │"长坂坡之战"  │
└────────┴─────────┘

多参数设置

:params
{
  "props" : {
    "name" : "赵云",
    "sex" : "男",
    "job" : "将军"
  }
}
MATCH (n {name: '赵云'}) SET n = $props RETURN n.name, n.sex, n.age, n.job,n.inwar
一旦整个对象n被赋值 ,那么旧的属性就丢失了
╒════════╤═══════╤═══════╤═══════╤═════════╕
│"n.name"│"n.sex"│"n.age"│"n.job"│"n.inwar"│
╞════════╪═══════╪═══════╪═══════╪═════════╡
│"赵云"    │"男"    │null   │"将军"   │null     │
└────────┴───────┴───────┴───────┴─────────┘

NEO4j CQL SET 设置标签

MATCH (n {name: '赵云'}) SET n:Soldier 
RETURN n.name, labels(n) AS labels
╒════════╤════════════════════╕
│"n.name"│"labels"            │
╞════════╪════════════════════╡
│"赵云"    │["Person","Soldier"]│

NEO4j CQL SET 设置多个标签

MATCH (n {name: '赵云'}) 
SET n:China:ShuGuo
RETURN n.name, labels(n) AS labels

│"n.name"│"labels"                             │
╞════════╪═════════════════════════════════════╡
│"赵云"    │["Person","China","Soldier","ShuGuo"]│


This entry was posted in 数据库 and tagged . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/neo4j-cql-set/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply