1. apoc.path.expandConfig简单语法
match (n) where id(n)=1
call apoc.path.expandConfig(n,
{
minLevel:0,
maxLevel:1,
labelFilter:'a|b',
relationFilter:'friend|friend_1',
uniqueness:'RELATIONSHIP_GLOBAL'
})
YIELD path
WITH path
return path
- minLevel 最短路径
- maxLevel 最长路径
- labelFilter 节点标签过滤
- relationFilter关系标签过滤,可携带方向(> 流入,< 流出) uniqueness 唯一性规则(RELATIONSHIP_GLOBAL关系唯一节点可出现多次)
- 5 有方向的多个关系表示方式[<]realtion1[>] | [<]realtion2[>]
2 创建节点/边DEMO
- 创建节点
CREATE (n:Stu)
- 创建边
match (n:Stu),(m:Stu)
where id(n)=29753068 and id(m)=29764290
create (n)-[r:friend]->(m)
- 创建或更新边
match (n:Stu),(m:Stu)
where id(n)=29753068 and id(m)=29764290
merge(n)-[r:friend]->(m)
3.图数据库元数据类型
3.1 property数据类型
- Number 是一种抽象类型,它的子类型有Integer和Float
- String 字符串
- boolean 布尔
- Point 空间类型 点
- 时间类型:Date、Time、LocalTime、DateTime、LocalDateTime和Duration
3.2 数据结构类型
Node 节点
- Id
- Label(s)
- Labels are not values but are a form of pattern syntax.
- Map (of properties)
Relationship 关系
- Id
- Type
- Map (of properties)
- Id of the start node
- Id of the end node
Path 路径
an alternating sequence of nodes and relationships
4常规操作
4.1 match
- 节点查询
match (n:cat) return n limit 10
- 删除节点所有属性
Match (n:person{name:"liy"})
SET n={}
RETURN n.name
- 替换所有属性
MATCH (p {name: 'liy'})
SET p = {name: '天天', age: '18'}
RETURN p.name, p.age
- 修改标签
MATCH (n {name: 'liy'})
SET n:Cat
RETURN n.name, labels(n) AS labels
- 在节点上设置多个标签
MATCH (n {name: 'liy'})
SET n:Cat:Animal
RETURN n.name, labels(n) AS labels
- where简单语法记录----节点
MATCH (n:Person)
WHERE n.age < 10
RETURN n.name, n.age
- where简单语法记录----关系
MATCH (n:Person)-[r:Friend]->(m)
WHERE r.age < 100
RETURN m.name, m.age
5.删除操作
5.1 删除单个节点
MATCH (n:Person {name: 'liy'}) DELETE n
5.2 删除所有节点和关系
MATCH (n) DETACH DELETE n
5.3 删除单个节点及所有关系
MATCH (n:Person {name: 'liy'}) DETACH DELETE n
5.4 仅仅删除关系
MATCH (n {name: 'liy'})-[r:friend]->() DELETE r
6 REMOVE移除操作
REMOVE用于从节点和关系中删除属性,以及从节点中删除标签
6.1 删除一个属性
MATCH (a {name: 'Liy'})
REMOVE a.age
RETURN a.name, a.age
6.2删除所有属性
MATCH (p {name: 'Liy'})
SET p = {}
RETURN p.name, p.age
6.3移除节点标签
MATCH (n {name: 'Liy'})
REMOVE n:Cat
RETURN n.name, labels(n)
6.4删除节点上的多个标签
MATCH (n {name: 'Liy'})
REMOVE n:Cat:Animal
RETURN n.name, labels(n)
7常用调优命令
- EXPLAIN
如果希望查看执行计划但不运行语句,请在Cypher语句前面加上EXPLAIN。该语句将始终返回一个空结果,并且不会对数据库进行任何更改
- PROFILE
如果您想运行语句并查看哪些操作符正在执行大部分工作,请使用PROFILE。这将运行语句并跟踪每个操作符通过多少行,以及每个操作符需要与存储层交互多少才能检索所需的数据。请注意,分析您的查询会使用更多的资源,所以除非您正在积极地处理查询,否则不应该进行分析
- 附加
明确说明查询中期望的关系和节点的类型和标签有助于Neo4j使用尽可能好的统计信息,从而获得更好的执行计划。这意味着,当您知道一个关系只能是某种类型时,您应该将其添加到查询中。标签也是如此,在关系的开始和结束节点上声明标签可以帮助Neo4j找到执行语句的最佳方法。
这里就是做下笔记,更具体的参考3.7Execute-plans
8 常用符号
- <> 不等于
9 维护命令
- 查询集群节点信息
call dbms.cluster.overview()
- 查询所有关系
call db.relationshipTypes