Neo4J入门

Docker安装Neo4J

清空所有数据

1
2
3
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

索引

创建索引
1
create index on :三国演义(name)
删除索引
1
drop index on :三国演义(name)
修改索引
1
MATCH(n:三国演义) SET n:'修改后的' RETURN n

节点

新增节点

刘备
1
CREATE(n:三国演义{name:"刘备"})
关羽/张飞
1
2
3
4
5
CREATE(n:三国演义{name:"关羽"}),(m:三国演义{name:"张飞"})

CREATE(:三国演义{name:"刘备"})
CREATE(:三国演义{name:"关羽"})
CREATE(:三国演义{name:"张飞"})

删除

删除name为刘备的节点
1
MATCH(n:三国演义{name:"刘备"}) DELETE n
根据id删除
1
MATCH(n:三国演义) WHERE id(n) = 0 DELETE n

修改

修改
1
2
3
MATCH(n:三国演义) WHERE id(n) = 0 SET n.label = '修改后的' RETURN n

MATCH(n:三国演义{name:"张非"}) n.name = '张飞' RETURN n

查询

查询
1
MATCH(n:三国演义) WHERE id(n) = 0 RETURN n

关系

新增关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create (:三国演义{name:'关羽'})-[r:义兄]->(:三国演义{name:"刘备"})

match (n:三国演义{name:'张飞'}),(m:三国演义{name:"刘备"}) merge (n)-[r:义兄]->(m)

match (n:三国演义{name: "刘备"}), (m:三国演义{name: "关羽"})
create (n) -[r:义弟]-> (m);
match (n:三国演义{name: "刘备"}), (m:三国演义{name: "张飞"})
create (n) -[r:义弟]-> (m);
match (n:三国演义{name: "关羽"}), (m:三国演义{name: "张飞"})
create (n) -[r:义弟]-> (m);
match (n:三国演义{name: "关羽"}), (m:三国演义{name: "刘备"})
create (n) -[r:义兄]-> (m);
match (n:三国演义{name: "张飞"}), (m:三国演义{name: "刘备"})
create (n) -[r:义兄]-> (m);
match (n:三国演义{name: "张飞"}), (m:三国演义{name: "关羽"})
create (n) -[r:义兄]-> (m);

删除关系

1
2
match (n:三国演义{name: "张飞"})-[r:兄长]->(m:三国演义{name: "关羽"}) 
delete r;

修改关系

查询关系

Load导入CSV

1
2
3
4
5
6
7
8
LOAD CSV FROM 'file:///三国演义.csv' AS line 
CREATE (:三国演义{name:line[0], tail:line[1], relation:line[2], label:line[3]})

LOAD CSV FROM 'file:///sgrw.csv' AS line
CREATE (:三国演义{name:line[0]})

LOAD CSV FROM 'file:///daochu.txt' AS line
CREATE ({name:line[1]})-[r:line[3]]->(name:line[0]))

创建关系时同时创建节点

1
2
3
4
5
create (:三国演义{name:"关羽"})-[:义弟]->(:三国演义{name:"刘备"})
create (:三国演义{name:"张飞"})-[:义弟]->(:三国演义{name:"刘备"})
create (:三国演义{name:"关羽"})-[:义兄]->(:三国演义{name:"张飞"})
create (:三国演义{name:"张苞"})-[:儿子]->(:三国演义{name:"张飞"})
create (:三国演义{name:"关兴"})-[:儿子]->(:三国演义{name:"关羽"})

合并相同节点的数据

1
2
3
4
5
MATCH (n:`三国演义`)
WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count
WHERE count > 1
CALL apoc.refactor.mergeNodes(nodelist) YIELD node
RETURN node

load导入时加上关系

1
2
3
LOAD CSV WITH HEADERS FROM "file:///三国演义.csv" AS line 
match (from:person{id:line.from_id}),(to:person{id:line.to_id})
merge (from)-[r:rel{property1:line.property1,property2:line.property2}]->(to)

导出数据

注意:此处的导出需要APOC
1
2
3
4
5
6
CALL apoc.export.csv.all(
'daochu.txt', //文件名和类型,也可以是daochu.csv
{ quotes:'none',//意思是导出的文件中没有引号,其他需求看下面图片
useTypes:true
}
)

安装APOC

1.下载地址(原页面),对应的neo4j版本是3.5.8,下载完成后把该jar文件丢到【/plugins】文件夹下
2.在配置文件中添加配置

1
2
3
4
5
6
apoc.import.file.use_neo4j_config=true
apoc.export.file.enabled=true
apoc.import.file.enabled=true
dbms.directories.import=import
dbms.security.allow_csv_import_from_file_urls=true
dbms.security.procedures.unrestricted=apoc.export.*,apoc.import.*

3.验证是否安装成功,重启neo4j后执行一下命令,打印出apoc版本为安装成功

1
return apoc.version()

评论