Pattern(图案?)是neo4j的核心,数据的查询就是通过Pattern的匹配进行的。
- 节点定义(Node)
(hxy:Person{name:'huxiaoyu',age:25})
节点通过小括号“()”来定义,其中‘hxy’是节点名称(唯一);‘Person’是类别;大括号“{}”内代表该节点的属性。
- 关系定义(Relationship)
-[r:empolyed {title: ["Analyst"]}]->
关系通过中括号“[]”来定义,其中“-->”代表关系指向(单向图),还有“--”代表无向图;r代表关系名称???(只在创建时唯一?)empolyed代表关系的类别;大括号内表示关于这个关系的细节。
- 路径定义(Path)
路径就是节点和关系交替出现的序列,比如:()-[]->()<-[]-()。这里仅用小括号和中括号简单表示,其中的内容同之前的节点和关系定义一样。
Syntax
Property types 属性类型
Structural types 结构类型
Composite types 复合类型
查询返回值 | 作为参数(Parameter) | 作为属性储存 | constructed with Cypher literals? | |
属性 | True | True | True | True |
结构 | True | False | False | False |
复合 | True | True | False | True |
(一)表达式
CASE表达式(Simple/Generic)
——————————————————————
Clause
- Reading clauses :match/optional match
- Projecting clauses :return/with/unwind (as)
- Reading sub-clauses :where/order[asc/desc]/skip/limit
- Reading hints :using index/scan/join ??
- Writing clauses :create/delete/detach delete/set/remove/foreach
- Reading/Writing clauses :merge/call [..yield]/create unique
- Set operations :union/union all
- Importing data :load csv
- Schema clauses :什么是Schema
MATCH
MATCH语句用于匹配Pattern(点和边组成的结构):
MATCH (a)--(b)
在匹配时,对相应的点或边进行变量声明,以返回所要访问变量的属性或其它函数值:
MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
RETURN movie.title
多种关系匹配用“|”进行连接:
MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person.name
深层关系匹配:
[:ACTED_IN*1..3]表示关系长度,最小步为1,最大步为3。例:()--()为1步
MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title
零长度路径
命名路径
跳跃关系匹配
OPTIONAL MATCH
如果目标存在则匹配内容与MATCH相同,若不存在返回NULL
RETURN
WITH??
with可以在结果传出之前,经常用于限制进入下一个MATCH查询的数据内容(order by、limit之类)
UNWIND
UNWIND的作用相当于转置,可以将列表转置成多个行