新手在Neo4j的增、删的部分操作:
提示:有不对的请大佬指正
csv数据集导入关系:
// 导入关系
LOAD CSV WITH HEADERS FROM "file:///all.csv" AS line
MATCH (from:class{name:line.from}),(to:name{class:line.to})
call apoc.merge.relationship(from, line.relation, {}, {}, to) yield rel
return *;
导入实体:
//导入实体
LOAD CSV WITH HEADERS FROM "file:///class.csv" AS line
MERGE (z:allclass{name:line.name})
return *;
//导入实体
LOAD CSV WITH HEADERS FROM "file:///1.csv" AS line
MERGE (z:class{name:line.name})
return *;
删除某类标签的全部节点和关系:
比如“公司”这类标签
// 删除标签的所有节点和关系
match (n:公司) detach delete n
删除所有节点关系
// 删除所有节点
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
删除重复关系
比如删除“具体为”这个重复的关系;
实体A与实体B关系构建时,不小心有两个一模一样的关系,这个代码可以删除重复的,只保留一个关系。
// 删除重复关系
MATCH (a)-[r:具体为]->(b)
WITH a, b, TAIL (COLLECT (r)) as rr
WHERE size(rr)>0
FOREACH (r IN rr | DELETE r)
删除某个id的关系
我是实体、关系在neo4j都是一个不用id(这个可能跟构建逻辑有关?不太了解),关系id为204的不想要了,采用下面这个可以删除
MATCH ()-[r]-()
WHERE ID(r) = 204
DELETE r
两个不同类标签的实体建立联系
fenlei这类的label的实体A和class这类label的实体B建立关系“朋友”
fenlei和class就是Node labels下面不同的颜色的类
MATCH (a:fenlei),(b:class)
WHERE a.name = 'A' AND b.name = 'B'
CREATE (a)-[r:朋友 { name: a.name + '<->' + b.name }]->(b)
RETURN type(r), r.name