您现在的位置是:首页 >技术教程 >Neo4j 笔记网站首页技术教程
Neo4j 笔记
启动命令
neo4j console
Cypher句法由四个不同的部分组成, 每一部分都有一个特殊的规则:
start——查找图形中的起始节点。
match——匹配图形模式, 可以定位感兴趣数据的子图形。
where——基于某些标准过滤数据。
return——返回感兴趣的结果。
1、创建节点
-- 创建类型为Person,属性为 {id: 1,name:'盘古',birthday:date("2000-08-18")} 的节点
create(n:Person{id: 1,name:'盘古',birthday:date("2000-08-18")})return n
create(:`Person`{id: 100,name:'测试'})
-- 批量创建节点
create(n:Person{id: 2,name:'鸿钧',birthday:date("2000-08-20")}),
(:Person{id: 3,name:'太上老君',birthday:date("2000-08-21")})
-- 创建节点为Person 和 Power 顶点数据,即一个节拥有多个类型
create(:`Person`:`Power`{id: 100,name:'测试'})
2、查询所有数据
-- 查询所有信息
MATCH (n) return n
-- 查询指定类型(Person和City)节点
MATCH (h:Person),(m:City) return h,m
-- 通过条件查询,查询主键id为0的节点,主键查询使用(),如果使用.则表示为属性
match(p:Person) where id(p)=0 return p
-- 通过属性查询,查询属性id=1 数据
match(p:Person) where p.id=1 return p
3、修改实体
match(p:Person) where id(p)=1 set p.birthday="2000-01-01" return p
通过属性查询并更新属性数据
match(p:Person) where p.id=1 set p.birthday="1900-01-01" return p
4、删除
通过属性id删除数据
match(n:Person{id:1}) delete n
通过条件删除,删除 id > 1的数据
MATCH (r) WHERE id(r) > 1 DELETE r
删除 作者、文献、期刊所有节点
match(n:`作者`),(m:`文献`),(k:`期刊`) delete n,m,k
5、创建关系
创建 a -> b 的关系
MATCH(a:Person),(b:Person)WHERE a.id=2 AND b.id=3 CREATE(a)-[r:徒弟]->(b)RETURN r
MATCH(a:Power),(b:Person)WHERE a.name='人界' AND b.name='女娲' CREATE(a)-[r:所属]->(b)RETURN r
创建两个节点及关系
CREATE (node1)-[:type {prop: 'value'}]->(node2)
三条语句一起执行
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
一条语句创建节点同时创建边
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'}),
(Keanu:Person {name:'Keanu Reeves', born:1964}),
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
两个节点多个关系
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Keanu)-[:ACTED_IN2 {roles:['Neo']}]->(TheMatrix)
# 已有节点 创建关系要先查询在创建
# 语法1 创建xiaoming的同学是张三
match (n:Student {name:"xiaoming"}), (m:Student {name:"zhangsan"})
create (n)-[r:同学]->(m) return n.name, type(r), m.name
# 语法2 创建lisi的朋友是张三
match (n:Student), (m:Student) where n.name="lisi" and m.name="zhangsan"
create (n)-[r:朋友]->(m) return n.name, type(r), m.name
批量创建关系
UNWIND $props AS p match (n:文献{name: p.head}), (m:作者{name: p.tail}) create (n)-[:连接]->(m)
-- create (a { name:"a" })-[:rel1]->(b {name :"b"}),(c {name:"c"})-[:rel2]->(d {name:"d"}),...
-- create(a {name: p.headProperty})-[:rel1]->(b {name: p.tailProperty})
-- create(`文献`{name: '中国富氦天然气资源研究现状与进展'})-[:作者]->(`作者`{name:'张雪'})
-- create(`文献`{name: '国内外氦气资源勘探开发现状及其对中国的启示'})-[:作者]->(`作者`{name:'李玉宏'})
6、删除边关系
删除reba节点的关系WORK_AT
match(p:Person{name: "reba"})-[r:WORK_AT]->() delete r
删除 作者-> 期刊 的边关系 连接
match(n:`作者`)-[r:`连接`]->(m:`期刊`) delete r
删除所有 边关系"连接"
MATCH (n)-[rel:`连接`]->(r) delete rel
MATCH (n)-[rel:`连接`]->(r) delete rel
MATCH (n)-[rel:`参考文献`]->(r) delete rel
MATCH (n)-[rel:`发表期刊`]->(r) delete rel
MATCH (n)-[rel:`作者`]->(r) delete rel
match(n:`作者`),(m:`文献`),(k:`期刊`) delete n,m,k
match(n:`作者`),(m:`文献`),(k:`期刊`) return n,m,k