我们在进行关系型数据库操作的时候使用sql,在使用其他数据库时使用sparsql,在操作neo4j时使用cypher语法。这是一种非常简单的查询语法,方便我们掌握。
节点:
节点是图数据库中的一个基本元素,表示一个具体的实体,可以类比成关系数据库中的记录
关系:
关系是图数据库中节点之间的连接,也表示成节点之间的边,neo4j中关系是双向的
属性:
属性是对节点以及关系的一种说明,可以类比成关系数据库中的字段或者列,这里需要强调的是,在图数据库中关系也是可以设计属性的。
标签:
标签(label)是同一类节点的组合,但是并不是在同一标签下的节点一定包含相同属性。
路径:
路径是图数据库建立之后,任意两个节点之间的连通管理,是关系的组合。
cypher是一种非常简洁的图查询语言,可以在shell与浏览器端直接执行。其基本语法包含以下四个部分:
start:设定查找的起始节点
match:匹配图形模式, 可以定位感兴趣数据的子图形
where:对查询数据进行过滤
limit:限制查询数量
return:返回结果
注意:在新版本的neo4j中start可以省略
如上图所示,整个图数据库节点包含两种label
1、person 电影的参演者或者导演
2、movie 电影
关系主要有两种:
1、acted_in : 某人参演某电影
2、directed:某人导演了某电影
属性若干:
1、person属性:born出生日期,name:姓名
2、movie属性:release发行年份 tagline:介绍 title:电影名称
3、acted_in属性:roles参演角色
4、directed属性:无
所有查询都基于上述实例模型进行。
match (n) return n
match (n) return n limit 10
注意:查询结果可以以图,文本,以及服务器返回代码形式(json)进行呈现
match (p:Person) return p limit 10
match (p:Person) return p.born limit 10
match (p:Person) where p.born>=1960 return p limit 2
match (p:Person) where p.name='Tom Hanks' return p
match (p:Person { name:'Tom Hanks' } ) return p
match (p:Person{name:'Tom Hanks'})--(movie) return p,movie
match (p:Person{name:'Tom Hanks'})-[r:DIRECTED]-(movie:Movie) return p,movie
match (p:Person)-[r]-(movie:Movie) return type(r)
match (p:Person)-[r]-(movie:Movie) return distinct type(r)
match (p:Person)-[:ACTED_IN]->(movie:Movie{title:"Apollo 13"}) return p,movie
match (p:Person)-[:ACTED_IN]->(movie:Movie{title:"Apollo 13"})<-[:DIRECTED]-(p1:Person) return p1,p,movie
match r=(p:Person{name:"Carrie-Anne Moss"})-[*1..3]-(p1:Person{name:"Lilly Wachowski"})return r
match (p:Person{name:"Carrie-Anne Moss"}),(p1:Person{name:"Lilly Wachowski"}),r=((p)-[*..3]-(p1)) return r
match (p:Person{name:"Carrie-Anne Moss"}),
(p1:Person{name:"Lilly Wachowski"}),
r=shortestPath((p)-[*..3]-(p1))
return r