neo4j的一些增删改查的语句
将自己用到过的一些语句记录下来,方便以后查看。
创建节点
create (n:两栖作战舰艇{name:'yyw'})
注:两栖作战舰艇是label,yyw是label的属性值name。
查询节点
MATCH (n:`两栖作战舰艇`) where n.name='yyw' return n
match(n:两栖作战舰艇{name:'“鹿特丹/加里西亚”级两栖登陆舰'}) return n
注:根据where语句来查询,第二种查询方法也可。
删除节点
MATCH (r) WHERE id(r) = 8946 DELETE r RETURN r
注:根据节点的id进行删除。
查两个节点
match(n:两栖作战舰艇{name:'“鹿特丹/加里西亚”级两栖登陆舰'}),(m:中程空对舰导弹{name:'X-31'}) return n,m
添加关系
match(n:两栖作战舰艇{name:'“鹿特丹/加里西亚”级两栖登陆舰'}),(m:中程空对舰导弹{name:'X-31'}) create(m)-[r:打击]->(n) return n,m
注:先确定两个节点,再给两个节点添加打击关系。
删除关系
match(n:两栖作战舰艇)-[r:属于]-(m:中程空对舰导弹) where id(n)=3019 and id(m)=6815 detach delete r return n,m
注:删除指定两个节点的指定关系
查询关系
match(n:两栖作战舰艇{name:'“鹿特丹/加里西亚”级两栖登陆舰'})-[r]-(m:中程空对舰导弹{name:'X-31'}) return r
match(n:两栖作战舰艇{name:'“鹿特丹/加里西亚”级两栖登陆舰'})-[r]-(m:中程空对舰导弹{name:'X-31'}) return r.type
注:查询两个节点的关系,第二个更好用。
删除两个节点中重复的关系
MATCH (a)-[r:has_test_rel]->(b)
WITH a, b, TAIL (COLLECT (r)) as rr
WHERE size(rr)>0
FOREACH (r IN rr | DELETE r)
复合查询
with语句给cypher提供了强大的pipeline能力,可以一个或者query的输出,或者下一个query的输入 和return语句非常类似,唯一不同的是,with的每一个结果,必须使用别名标识。
见上