neo4j常用cypher笔记(1)

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
  1. minLevel 最短路径
  2. maxLevel 最长路径
  3. labelFilter 节点标签过滤
  4. 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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值