二、Neo4j-增、删、改

一、新建

(1) 新建节点

  • 创建没有属性节点
CREATE (n:Useless)
  • 创建有属性节点
CREATE (d:Dept { deptno:10,dname:"研发部",location:"高新区" });
CREATE (e:Employee { name:"婷姐",age:25 });
CREATE (e:Employee { name:"马哥" ,age:25});
CREATE (e:Employee { name:"小贾" ,age:25});
CREATE (e:Employee { name:"长明" ,age:25});
CREATE (e:Employee { name:"小米" });
  • 创建多个标签
CREATE (m:Employee:Emp:User)
  • 创建多个节点
    CREATE (A:Person{name: 'A', property:13 }),
    (B:Person{ name: 'B', property:33,eyes: 'blue' }),
    (C:Person{ name: 'C', property:44,eyes: 'blue' }),
    (D:Person{ name: 'D', eyes: 'blue' })
    return A,B,C,D
    

(2) 新建关系

2.1,使用现有节点创建没有属性的关系

MATCH (emp:Employee{name:'马哥'}),(d:Dept{dname:'研发部'})
CREATE (emp)-[r:belongs_to]->(d) return r

2.2,使用现有节点创建有属性的关系

MATCH (emp:Employee{name:'婷姐'}),(d:Dept{dname:'研发部'})
CREATE (e)-[r:belongs_to{date:"2020-09-09",no:"101"}]->(d) return r

2.3,使用新节点创建没有属性的关系

CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)

2.4,使用新节点创建有属性的关系

CREATE(video1:YoukuVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})-
[movie:ACTION_MOVIES{rating:1}]
->(video2:YoukuVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})

2.5,检索关系节点的详细信息

MATCH (cust:Customer)-[r:DO_SHOPPING_WITH]->(cc:Card)
RETURN cust,cc

2.6,如果关系存在,则不创建,不存在则创建  

MATCH (cust:org),(cc:discipline)

   Where cust.org_id=1 and cc.md_id=1460521003320418306 and not (cust)-[:IN]->(cc)

   Create (cust)-[:IN]->(cc)

二、更新

(1)向现有节点或关系添加新属性

MATCH (book:Book)

SET book.title = '围城'

RETURN book

(2)添加或更新属性值

MATCH (book:Book)

SET book.publish = '人民文学出版社'

RETURN book

(3)merge-on create

     

增加关系

Match (n:Person{name:'妈妈'}),(f:Person{name:'爸爸'})
Merge(n)-[:`夫妻`]->(f)

  删除关系,增加关系

Match (n:Person{name:'妈妈'}),(f:Person{name:'爸爸'})
Merge(n)-[r:`夫妻`]->(f) delete r
Merge(n)-[:`金婚`]->(f)

更新节点

MERGE (o:org{org_id:1})
ON MATCH SET o.org_id=1,o.sort=1,o.org_name='测试',o.org_code='001',
 o.remarks='哈哈',o.status=1,o.rec_status=1 RETURN o

三、删除

(1)删除节点与关系——delete

删除单个节点

MATCH (n:Useless) DELETE n

删除单个节点和连接它的关系

MATCH (n { name: '张三' })-[r]-() DELETE n, r

删除所有节点和关系

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

删除某一类关系

match (n)-[r:`金婚`]-() delete r

(2)删除标签与属性——remove

  删除属性

MATCH (andres { name: 'Andres' }) REMOVE andres.age RETURN andres

删除节点的标签

MATCH (n { name: 'Peter' }) REMOVE n:German RETURN n

删除多重标签

MATCH (n{name:'Peter' }) REMOVE n:Emp:User RETURN n

(3) Neo4j CQL DELETE和REMOVE命令之间的主要区别 -

  1. DELETE操作用于删除节点和关联关系。
  2. REMOVE操作用于删除标签和属性。

(4)Neo4j CQL DELETE和REMOVE命令之间的相似性 -

  1. 这两个命令不应单独使用。
  2. 两个命令都应该与MATCH命令一起使用。
可以使用Python的Neo4j驱动程序neo4j-driver来连接Neo4j数据库进行查操作。 以下是一个简单的示例代码,演示如何使用Python与Neo4j进行查操作: ```python from neo4j import GraphDatabase # 连接Neo4j数据库 uri = "bolt://localhost:7687" user = "neo4j" password = "password" driver = GraphDatabase.driver(uri, auth=(user, password)) # 创建节点 def create_node(tx, name): tx.run("CREATE (a:Person {name: $name})", name=name) # 删除节点 def delete_node(tx, name): tx.run("MATCH (a:Person {name: $name}) DELETE a", name=name) # 更新节点 def update_node(tx, old_name, new_name): tx.run("MATCH (a:Person {name: $old_name}) SET a.name = $new_name", old_name=old_name, new_name=new_name) # 查询节点 def find_node(tx, name): result = tx.run("MATCH (a:Person {name: $name}) RETURN a", name=name) for record in result: print(record["a"]["name"]) # 在会话中运行操作 with driver.session() as session: session.write_transaction(create_node, "Alice") session.write_transaction(create_node, "Bob") session.write_transaction(delete_node, "Bob") session.write_transaction(update_node, "Alice", "Alicia") session.read_transaction(find_node, "Alicia") # 关闭驱动程序 driver.close() ``` 此示例代码使用Neo4j数据库中的Person节点进行查操作。其中,创建节点使用CREATE语句,删除节点使用MATCH和DELETE语句,更新节点使用MATCH和SET语句,查询节点使用MATCH和RETURN语句。 请确保已安装neo4j-driver,可以使用以下命令进行安装: ``` pip install neo4j-driver ``` 注意:在实际使用中,请根据具体需求修代码并进行适当的防范措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值