#
Neo4j 标签属性图模型
• Nodes – 节点。在其他图模型中称作“点”、“顶点”、“对象”。
• Relationships – 关系。在其他图模型中也称作“边”、“弧”、“线”。关系拥有类型。
• Properties – 属性,可以定义在节点和关系上。
• Labels – 标签,代表节点的类别。
CQL基本简介
Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由于Neo4j在图形数据库家族中处于绝对领先的地位,拥有众多的用户基数,使得Cypher成为图形查询语言的事实上的标准
CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
Cypher语言的关键字不区分大小写,但是属性值,标签,关系类型和变量是区分大小写的。
CQL数据类型
S.No. | CQL数据类型 | 用法 |
---|---|---|
1. | boolean | 用于表示布尔文字:true,false。 |
2. | byte | 用于表示8位整数。 |
3. | short | 用于表示16位整数。 |
4. | int | 用于表示32位整数。 |
5. | long | 用于表示64位整数。 |
6. | float | I用于表示32位浮点数。 |
7. | double | 用于表示64位浮点数。 |
8. | char | 用于表示16位字符。 |
9. | String | 用于表示字符串。 |
常用CQL命令与函数
通过常用命令实现图数据的增删改查
S.No. | CQL命令/条 | 用法 |
---|---|---|
1。 | CREATE 创建 |
创建节点,关系和属性 |
2。 | MATCH 匹配 |
检索有关节点,关系和属性数据 |
3。 | RETURN 返回 |
返回查询结果 |
4。 | WHERE 哪里 |
提供条件过滤检索数据 |
5。 | DELETE 删除 |
删除节点和关系 |
6。 | REMOVE 移除 |
删除节点和关系的属性 |
7。 | ORDER BY 以…排序 |
排序检索数据 |
8。 | SET 组 |
添加或更新标签 |
常用函数
S.No. | 定制列表功能 | 用法 |
---|---|---|
1。 | String 字符串 |
它们用于使用String字面量。 |
2。 | Aggregation 聚合 |
它们用于对CQL查询结果执行一些聚合操作。 |
3。 | Relationship 关系 |
他们用于获取关系的细节,如startnode,endnode等。 |
图数据的形式
基本语法
节点
节点必须包含在括号 () 内
(n:Label1:Label2)
• 标签名前必须有冒号
• 节点可以有多个标签
• 标签对节点进行分类,似关系数据库中的表 标签对节点进行分类,类似关系数据库中的表
(n)
节点可以没有或者不指定标签
(n:Label {prop: 'value'})
节点可以有属性
关系
关系两端各有一个短横线 /减号,用方括包含关系类型 ,关系类型名前面必须有冒号 (:) 。在其中一端用 >或 < 代表关系的方向,也可以没有方向
- - ,<- -,- ->
-[:DIRECTED]- ->
关系以短划线\减号和方括号包含
与标签一样关系类型前必须要有“:”
- ->或 -[r:TYPE] ->
关系在创建时必须指定方向
关系在查询时可以不指定方向表示双向关系
< >指定关系的方 向
关系也可以有属性
-[:KNOWS {since: 2010}]
模式
模式是由关系连接起来的节点构成的表达式,关系可以是有方向的,也可以没有方向,双向的
() -[] -()
() -[] ->()
()< -[] -()
模式的例子
(n:Label {prop:'value'})-[:TYPE]- >(m:Label)
- 最基本的模式:由一类关系连接两个节点 最基本的模式:
- 由一类关系连接两个节点
(p1:Person {name:'Alice'}) -[:KNOWS][->(p2:Person {name:'Bob'})
如果存在从Alice到Bob的、类型为KNOWS的关系,那么上面模式会将匹配的节点保存在 p1 和p2中。
Cypher查询的组成部分
eg1.
eg 2.
eg 3.
图查询的结果 vs表状数据结果
eg 4.
命名规范
参考文献:Neo4j Inc. APAC 2018年 俞方桦