neo4j日常管理
1.官网文档地址
https://neo4j.com/docs/operations-manual/current/
2.查看都有那些表
neo4j@neo4j> CALL db.labels() YIELD label
RETURN label;
+----------+
| label |
+----------+
| "Person" |
| "User" |
+----------+
查看索引
show indexes;
2.删除所有关系为SON的关系
match p=()-[r:SON]->() delete r
3.创建节点和关系
创建节点
create (p:person{name:"贾宝玉",sex:"男",age:"16",hobby:"女孩子"})
create (p:person{name:"林黛玉",sex:"女",age:"14",hobby:"葬花"})
create (p:person{name:"贾政",sex:"男",age:34,hobby:"装正经",prof:"工部员外郎"})
创建关系
match (p1:person{name:"贾宝玉"}),(p2:person{name:"贾政"}) create (p1)-[r:父亲]->(p2) return p1,p2
match (p1:person{name:"贾宝玉"}),(p2:person{name:"林黛玉"}) create (p1)-[r:表妹]->(p2) return p1,p2
match (p1:person{name:"贾政"}),(p2:person{name:"林黛玉"}) create (p1)-[r:外甥女]->(p2) return p1,p2
match (p1:person{name:"贾政"}),(p2:person{name:"贾宝玉"}) create (p1)-[r:儿子]->(p2) return p1,p2
match (p1:person{name:"林黛玉"}),(p2:person{name:"贾宝玉"}) create (p1)-[r:表哥]->(p2) return p1,p2
match (p1:person{name:"林黛玉"}),(p2:person{name:"贾政"}) create (p1)-[r:舅舅]->(p2) return p1,p2
创建带有属性的关系DO_SHOPPING_WITH
MATCH (cust:Customer{id:"1001"}),(cc:CreditCard{id:"5001"})
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
4.删除两个节点之间的指定关系,
删除贾宝玉->父亲->贾政这对关系
match(n:person{name:"贾宝玉"})-[r:父亲]->(m:person{name:"贾政"}) delete r
之前前后的对比


5.查询某个表
MATCH (n:person) RETURN n
6.查询所有表
match(n) return n
7.查询某个节点
match(n:person) where n.name="贾宝玉" return n
或是通过id查询
match(n:person) where where id(n)=4 return n
8.条件查询
整个图谱(所有的表)查询
match(n)
where n.name ="张三" or n.name = "李四"
return n
单个表查询
match(n:myfamily)
where n.name ="张三" or n.name = "李四"
return n
整个图谱中返回有儿子关系的节点
match(n)-[r:儿子]->(m) return n,m
整个图谱查找儿子是 张三 的所有节点
match(n)-[:儿子]->(m) WHERE m.name = '张三' return n,m
查看整个图谱所有的节点总数
MATCH (n)
RETURN COUNT(n) AS totalNodes;
查看具体某个标签的节点总数
MATCH (n:myfamily)
RETURN COUNT(n) AS total_myfamily;
查找关系为 儿子 的记录总数
MATCH ()-[r:儿子]->()
RETURN COUNT(r) AS totalKnowsRelationships;
in查询
match(n) where n.name in ["张三","李四"] return n
模糊匹配
类似like '%宝%'
MATCH (n)
WHERE n.name =~ '.*宝.*'
RETURN n
返回任意关系为 父亲 和 儿子的所有节点关系
MATCH p=(n)-[:父亲|:儿子]->(m) RETURN p
9.索引
创建索引
CREATE INDEX idx_person_name FOR (p:person) ON (p.name)
查看索引
SHOW INDEXES
删除索引
drop index idx_person_name
10.删除某个标签
MATCH (n:Person)
DETACH DELETE n
MATCH (n:Company)
DETACH DELETE n
11.删除所有数据(包括节点、关系,唯一性约束和索引无法删除)
MATCH (n)
DETACH DELETE n;
12.查看执行计划
EXPLAIN MATCH (p:User {name: 'User_20005'}) RETURN p;
PROFILE MATCH (p:User {name: 'User_20005'}) RETURN p;
13.查找最短路径
MATCH (p:User {name: "User_20005"}), (m:Company {name: "Company_4104"})
MATCH path = shortestPath((p)-[*]-(m))
RETURN path
14.查找节点关系链路
查询节点为24所有的节点和关系,一条链线关系
MATCH (n:Company)-[r]-(m) where id(n)=24 return n,r,m
m没有具体写标签,代表是查询所有的标签
查找所有标签中姓名为User_20005的关系链路
MATCH (n)-[r]-(m) where n.name='User_20005' return n,r,m
只查找最近的一层关系链路的查询
MATCH p=(a)-[*..1]-(b)
WHERE a.name='User_20005'
RETURN p
15.查看apoc版本
return apoc.version();
浙公网安备 33010602011771号