知识点1——节点
Cypher 使用一对括号来表示一个节点
() //()代表一个匿名的、无特征的节点,想要在别处使用它就必须如下
(matrix) //使用一个变量名 声明 变量节点,这个matrix可以是n可以是a可以是x等等任何变量名,都一样
(:Movie) //使用标签/类 声明一个节点,像“()”一样,我们在别处使用不了它
(matrix:Movie) //既声明了变量名,又声明了标签/类 的节点
(matrix:Movie {title: 'The Matrix'}) //既声明了变量名,又声明了标签/类 又有具体属性的节点
(matrix:Movie {title: 'The Matrix', released: 1997}) //既声明了变量名,又声明了标签/类 又有多个属性的节点
知识点2——关系
Cypher 使用一对破折号 ( --) 表示无向关系。定向关系的一端有一个箭头 ( <–, -->)。括号表达式 ( […]) 可用于添加详细信息。这可能包括变量、属性和类型信息。
--> //匿名的、无特征的 关系,类似“()”,可能实际写法为 “ -[]->”
-[role]-> //使用一个变量名 声明 变量关系,role是变量名,以便后面使用
-[:ACTED_IN]-> //冒号后面是标签,同理 是以标签声明一个 关系
-[role:ACTED_IN]-> //变量+标签 声明一个 关系
-[role:ACTED_IN {roles: ['Neo']}]-> //变量+标签+属性 (注意这个属性,属性名roles,属性值是个列表[])
知识点3——属性
Cypher 使用一对大括号代表属性,属性是描述 节点和关系 的键值对(注意:属性必须是键值对)
属性的值
可以容纳不同的数据类型,例如number,string或boolean。
可以保存包含例如字符串、数字或布尔值的同类列表(数组)。
(:Example {a: 1, b: 3.14})
(:Example {c: 'This is an example string', d: true, e: false})
(:Example {f: [1, 2, 3], g: [2.71, 3.14], h: ['abc', 'example'], i: [true, true, false]})
属性值既然这么多类型,查找接收的时候就是一个麻烦事情,比如你不知道“1”代表是数字还是字符串,有些是列表还是单个数据,类似:
知识点4——命名约定
命名约定让我们更容易识别Cypher 程序中的变量(当然 汉语不用)
节点标签 //驼峰式大小写,以大写字符开头,比如(:Movie)、(:Person)、(:Country)
关系标签 //全部大写,使用下划线分隔单词,比如[:LIVES_IN]、[:PART_OF]、[:ACTED_IN]
属性名称 //驼峰小写,以小写字符开头,比如:{title: 'The Matrix', released: 1997}、{firstName:'王'}
//注意,属性键值对的值可以是上面说的数据类型任何类型,按实际情况赋值,不遵循命名约定
//name为“max”和“Max”的节点肯定不同,甚至name为“max”和“max”的节点都不同(因为id不同)
知识点5——综合实战
(keanu:Person:Actor {name: 'Keanu Reeves'})-[role:ACTED_IN {roles: ['Neo']}]->(matrix:Movie {title: 'The Matrix'})
//keanu节点变量名,后面可以声明多个标签/类:Person:Actor
//role关系变量名,后面是关系类型:ACTED_IN,还有它的属性 {roles: ['Neo']}
//matrix节点变量名,后面是节点标签:Movie
Cypher 允许将模式分配给变量
acted_in = (:Person)-[:ACTED_IN]->(:Movie) //从Person类指向Movie类 的 关系变量 acted_in,它的类型是ACTED_IN
以上——