-
创建节点【create】
节点不存在时,创建,存在时,忽略
merge(n:洛杉矶湖人)
不论节点是否存在,创建
create(n:洛杉矶湖人)
note:节点的id由neo4j自动分配,且按序列值递增
-
修改节点属性
(1)查询id=21798的节点
match(n) where ID(n) = 21798 return n
错误示例
match(n) where n.id = 21798 return n
(2)给节点添加属性,label:节点标签名、height:身高、position:场上位置
match(n) where ID(n) = 21798 set n.label='科比',n.height=198,n.position='得分后卫' return n
sql语句示例:
update n set label = ‘科比’,height=198,position='得分后卫' where id = 21798
note:
neo4j查询节点用:match == 相当于关系型数据库的select,相当于非关系数据库mongodb的find
neo4j修改节点属性用:set == 相当于关系型数据库的update…set…
区别:关系型数据库如果字段不存在的话会报错,而NoSql数据库neo4j,如果属性字段不存在的话,就添加
(3)删除节点身高属性
match(n) where ID(n) = 21798 remove n.height return n
(4)模糊查询,查询属性值label开头是“科”其余任意值的节点信息
match(n) where n.label=~'科*.' return n
-
创建带属性的节点
create(n:洛杉矶湖人{label:'奥尼尔',height:216,position:'中锋'}) return n
错误示例:
create(n:洛杉矶湖人{'label':'奥尼尔','height':216,'position':'中锋'}) return n
-
删除节点
(1)查找所有与湖人队有关的节点
match(n:洛杉矶湖人) return n
(2)删除节点
match(n:洛杉矶湖人) where ID(n) = 21836 delete n
note:neo4j中不管是删除节点还是删除关系,都是用delete命令进行删除。并且,删除哪个节点必须先用match匹配
-
创建关系
创建统一用create命令,而关系的创建,实际上和创建节点差不多,唯一区别就是,关系是有方向的,而且关系用‘[]’表示,而节点用’()'表示。
给节点科比和奥尼尔创建一条关系,关系的name叫“搭档”,这种关系,不区分方向,因此,无所谓谁是startNode,谁是endNode。match(n),(b) where n.label='科比' and b.label='奥尼尔' create(n)-[r:搭档{since:1996,des:'NBA史上最强OK组合',champion:3}]->(b) return n,r,b
以上代码段,首先匹配找到节点n和b,也就是科比和奥尼尔代表的节点Node;然后创建节点n到节点b的关系r,r有三个属性,一个是从哪一年开始since,一个是关系描述des,另一个是合作拿过的冠军数量champion;最后返回n,r,b 完整节点之间的关系结果。
-
查询关系
match(n)-[r]-(b) where n.label='科比' and b.label='奥尼尔‘ return n,r,b
-
修改关系属性
修改关系的属性也用set,如修改id等于12513的关系的属性des为“小飞侠&大鲨鱼”。
match(n)-[r]-(b) where ID(r) = 12513 set r.des='小飞侠&大鲨鱼' return n,r,b
-
删除节点关系
删除节点科比和奥尼尔之间的关系
match(n)-[r]-(b) where n.label='科比' and b.label='奥尼尔' delete r return r
-
创建索引
为节点“洛杉矶湖人”基于属性“label”创建索引
create index on:洛杉矶湖人(label)
-
删除索引
drop index on:洛杉矶湖人(label)
-
总结
结合表达式: match(n)-[r] -(b)
如果查询节点n —— return n
如果查询关系r —— return r
如果查询节点b —— return b
如果查询节点n和b之间的关系r —— return n,r,b
如果查询带条件 —— where n.x = x,r.xx = xx,b.xxx = xxx
如果修改属性 —— where..... set ....
如果删除属性 —— where..... remove .....
如果删除节点或关系 —— where...delete n 或 delete r 或 delete b 或 delete n , r , b