Cypher

文章详细介绍了Neo4j图数据库中点、边的概念及其表示方法,包括点的属性和标签,边的类型和属性。MATCH语句的使用是重点,包括路径模式、可变长边以及查询结构。此外,还提到了其他关键操作如MERGE、UNION和图算法的执行模式。
摘要由CSDN通过智能技术生成

参考:https://www.galaxybase.com/document?file=v3.4.1%2Fstandalone-doc&docid=15

以下默认:n为点;r为边;p为路径

基础

字符规则

  1. 关键字:大小写敏感
  2. 名称:由 [字母,数组,_] 组成;以字母开头;大小写敏感

基础元素

  1. 点:有且只有一个类型,可以有多个 属性和标签
  2. 边:有且只有一个类型,可以有多个 属性,没有标签
  3. 属性:KV键值对
  4. 标签:

表示:点 边 模式 路径

这里讲的是 在MATCH中的
进行限制或绑定到变量,绑定到变量 可用于后续计算
若要在后续使用,直接 用变量名 即可

(n:Man {name:'hahaha',age:20})

  • r:命名
  • :Man:类型
  • {name:‘hahaha’,age:20}):键值对
(n)
(:Man)
({name:'hahaha',age:20})
(n:Man {name:'hahaha',age:20})

-[r::BELONG {year:'2000'} ]-

  • r:命名
  • :BELONG :类型
  • {year:‘2000’}:键值对
# 最基础表示,不绑定名字,[不考虑方向,右点指向左点,指向右点]
--
<--
-->

# 加`[]`,里面不放东西,加了等于没加
-[]-

# 给这条边命名,方便后续使用
-[r]-

# 给这条边加上一些限制m,[类型,属性,类型+属性]
-[:BELONG]- 
-[ {year:'2000'} ]-
-[:BELONG  {year:'2000'} ]-

# 支持两种类型
-[:BELONG|MANAGE]- 

# 同时 命名+限制(类型+属性)
-[r::BELONG  {year:'2000'} ]-

可变长边

可限制 最小长度与最大长度,不限制最大长度时 很危险

-[*1..3]-
-[:BELONG *1..3]-
-[:BELONG *1..]-
-[:BELONG *..3]-
-[:BELONG *..]-

模式

  1. 由边将点连接起来的
  2. 总是以 点 开始和结束
  3. 方向并不要求一致
  4. 根据模式查到 路径
(n)
(n)-[r]->(n)
(n)-[r]->(n)-[r]->(n)
(n)-[r]->(n)<-[r]-(n)

语句结构

  1. 为下面的理解做作铺垫
  2. 向MYSQL一样,MATCH查到一条数据就增加一行;其他预计按照上一行的数据逐行处理,聚合函数 和 UNION 除外
  3. 这条语句执行完成,生成完整的一张表格后,传到下一行(这意味着 不能 既传一张表,又传一个变量)

查询 MATCH等基础语句

[OPTIONAL] MATCH [p=]路径
WHERE 筛选条件
WITH 变量1,变量2
ORDER BY 变量1,变量2
SKIP 4
LIMIT 6
RETURN p

MERGE

UNION [ALL]
  1. MATCH:普配路径
  2. WHERE:进行过滤,简单的删选条件可以放在匹配规则
  3. WITH:限制传入的变量(放弃一部分变量)
  4. ORDER BY:排序,前一个相等了,再用后一个
  5. SKIP:跳过前几个,上面的是跳过4个
  6. LIMIT:取前面几个,上面的是取前面6个
  7. RETURN:返回
  8. UNION:拼接表,要求以下相同 [列数,列名];会进行去重
  9. MERGE:类似于MATCH,查不到时会CREATE

OPTIONAL MATCH:对未匹配到的位置,填入null
p=路径匹配规则:把获取到的路径放到p中
SKIP LIMIT配合使用:选择第5-10个
UNION ALL:不进行去重,直接拼接

修改图结构

创建 CREATE

CREATE 

删除 DELETE

DELETE n

DELETE r

DETACH DELETE 

修改属性值 SET

SET r.name='hahaha'

删除属性和标签 REMOVE

REMOVE n.name

REMOVE n:Man

REMOVE n:Man:Chinese

加载CSV

LOAD CSV FROM 'https://www.chuanglintech.com/public/company.csv' AS line 

查看执行计划

  • EXPLAIN:粗略
  • PROFILE:精确

其他

CALL … YIELD …
UNWIND
EXIST
IS NULL
IS NOT NULL

UNIQUE
INDEX
STARTS WITH
ENDS WITH
CONTAINS
DISTINCT
AS
OR
AND
NOT
USING [INDEX [SEEK] | SCAN ] variable:Label(property)
FOREACH <设值操作>
ALLOWREPEAT DIRECTED

CREATE INDEX ON :label(key…)
DROP INDEX ON :label(key…)

函数

allShortestPaths()
id()

Neo4j/存储接口

apoc函数

apoc.custom.declareProcedure

GDS

官方文档:https://neo4j.com/docs/graph-data-science/current/

非算法

函数作用链接
gds.graph.list列出所有映射;
这不是一个快照,原图新增了符合的节点,在使用的时候也会出现
https://neo4j.com/docs/graph-data-science/current/graph-list/
gds.graph.project创建 映射(临时图,用完需手动删除)https://neo4j.com/docs/graph-data-science/current/graph-project/
gds.util.asNode从ID转换为node
gds.graph.drop删除映射https://neo4j.com/docs/graph-data-science/current/graph-drop/

并不是都有CALL调用

# gds.graph.list
CALL gds.graph.list()

# gds.graph.project
CALL gds.graph.project('friends','person','friend')

# gds.util.asNode:
CALL gds.pageRank.stream('friends')
YIELD nodeId
WITH gds.util.asNode(nodeId) AS n
RETURN n

^等价
CALL gds.pageRank.stream('friends')
YIELD nodeId
RETURN gds.util.asNode(nodeId) AS n

# gds.graph.drop
CALL gds.graph.drop('friends')

算法

使用方式

CALL gds.labelPropagation.stats(xx)
CALL gds.labelPropagation.write(xx)
CALL gds.labelPropagation.mutate(xx)
CALL gds.labelPropagation.stream(xx)

算法 执行模式 execution mode

https://neo4j.com/docs/graph-data-science/current/common-usage/running-algos/
https://neo4j.com/docs/graph-data-science/current/algorithms/syntax/

四种

  • stream
  • stats
  • mutate
  • write
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值