neo4j的使用

下文内容参考了neo4j的示例代码     


1.插入结点和关系

属性名可以有0个(直接省略花括号及其内容)或多个(在花括号内用逗号隔开),一个属性名也可以对应多个属性值(在[]数组中用逗号隔开,字符串要加单引号)

1.1创建实例

CREATE (实例名:所属类名 {属性名:属性值, 属性名:属性值})

1.2创建关系

(实例名1)-[:关系名 {属性名:['属性值1','属性值2']}]->(实例名2)

1.3示例

只粘贴了一部分代码

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix)


2.查询结点

2.1按类查询结点

//寻找10个Person类结点,用people返回,并且输出属性name的值

2.2按属性值查询结点

//寻找属性name的值为"Tom Hanks"的任意类结点,并且用tom返回
MATCH (tom {name: "Tom Hanks"}) RETURN tom

//寻找1990~2000之间的Movie类结点,保存到nineties中,并且返回title属性值

MATCH (nineties:Movie) WHERE nineties.released >= 1990 AND nineties.released < 2000 RETURN nineties.title

2.3按属性值+关系查询结点

2.3.1查找直接互连结点

//按属性值查找结点tom,再按照关系查询tom指向的结点,保存到tomHanksMovies中。

MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies

//按属性值查找cloudAtlas,再按照关系查询指向cloudAtlas的结点保存到directors中

MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) RETURN directors.name

//查找与某类结点以任意关系相关联的另一类结点

MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) RETURN people.name, Type(relatedTo), relatedTo

2.3.2查找非直接互联结点 

//tom以某种关系指向m,查找以某种关系指向m的其他结点,保存到coActor中

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name

//查找二层不互联结点,即find co-co-actors who haven't worked with Tom Hanks

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
  (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors)
WHERE NOT (tom)-[:ACTED_IN]->()<-[:ACTED_IN]-(cocoActors) AND tom <> cocoActors
RETURN cocoActors.name AS Recommended, count(*) AS Strength ORDER BY Strength DESC

//Movies and actors up to 4 "hops" away from Kevin Bacon

MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood)
RETURN DISTINCT hollywood

2.3.3寻找某两个节点之间的全部中间结点

//Find someone to introduce Tom Hanks to Tom Cruise

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
  (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
RETURN tom, m, coActors, m2, cruise

2.3.4两节点之间的最短路径

//Kevin Bacon~Meg Ryan

MATCH p=shortestPath(
(bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"})
)
RETURN p

2.3.5查询关系

match (Laurence:Person{name:"Laurence Fishburne"})-[f:ACTED_IN]->(TheMatrix:Movie{title:"The Matrix"}) return f


3.删除

3.1删除关系

//Laurence~TheMatrix:Movie

match (Laurence:Person{name:"Laurence Fishburne"})-[f:ACTED_IN]->(TheMatrix:Movie{title:"The Matrix"})
 delete f

3.2删除节点(要先删除该节点相关联的关系)

match (Laurence:Person{name:"Laurence Fishburne"}) delete Laurence

3.3快速清空数据库

MATCH (n)

DETACH DELETE n


4.修改

4.1为结点添加标签

//将结点e设置为cute类,e将同时为Person类和cute类

MATCH (e {name:"Keanu Reeves"}) set e:cute return e

4.2为结点修改属性

MATCH (e {name:"Keanu Reeves"}) set e.born=2020 return e

4.3为结点添加新属性

MATCH (e {name:"Keanu Reeves"}) set e.sex='male' return e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值