Cypher笔记(一)

这篇博客介绍了Neo4j的Cypher查询语言,包括运算符、语句如MATCH、WHERE、AGGREGATION,以及LOAD CSV、MERGE等操作。此外,还详细讲解了函数的使用,如COUNT、AVG,以及字符串匹配和数据导入导出。Cypher在处理图形数据库时提供了一种强大的查询和操作工具。
摘要由CSDN通过智能技术生成

Cypher笔记(一)

更详细的内容请阅读《neo4j权威指南》

运算符

  • 数学运算符:+、-、*、/、%、^
  • 比较运算符:=、<>、<、>、<=、>=、IS NULL、IS NOT NULL
  • 布尔运算符:AND、OR、XOR、NOT
  • 字符串运算符:+、=~
  • 列表运算符:+、IN

语句

  • 读语句:MATCH、OPTIONAL MATCH、WHERE、START、Aggregation、LOAD CSV
  • 写语句:CREATE、MERGE、SET、DELETE、REMOVE、FOREACH、CREATE UNIQUE
  • 通用语句:RETURN、ORDER BY、LIMIT、SKIP、WITH、UNWIND、UNION、CALL
  • 字符串匹配:STARTS WITH、ENDS WITH、CONTAINS
MATCH

MATCH是模式描述的一部分,匹配的时候就会考虑到WHERE语句中的断言,而不是匹配之后。

OPTIONAL MATCH

用于搜索模式中描述的匹配项,对于找不到的项用null代替。

WHERE

在WITH和START中用于过滤结果,在MATCH和OPTIONAL MATCH中为模式增加约束,而不能看作匹配完成后的结果过滤

START

通过遗留索引查找开始点

START n = node:Pig(name = 'A') RETURN n
START n = node:Pig('name:A') RETURN n
START r = relationship:Own(name = 'Andres') RETURN r
Aggregation
  • count:count(*)用于计算匹配的行数,count(<expression>)用于计算<expression>中的非空值的数量
  • sum:计算所有值之和,空值会被丢弃
  • avg:计算数值列平均值
  • percentileDisc:计算给定值在一个组中的百分位,取值0.0到1.0。它使用舍入法返回最接近百分位的值
  • percentileCont:计算给定值在一个组中的百分位,取值0.0到1.0。采用线性插值的方法,在两个值之间计算一个加权平均数
  • stdev:计算给定值在一个组中的标准偏差,采用标准的two-pass方法,以N-1作为分母,当以部分样本作为无偏估计时应使用stdev;当计算整个样本的标准偏差时应使用stdevp
  • stdevp:计算给定值在一个组中的标准偏差
  • max
  • min
  • collect:将所有值收集起来放入一个列表,空值会被忽略
  • distinct:去掉重复值
MATCH (n { name: 'A' })-->(x) RETURN n, count(*) // 返回了开始节点和与之关联的节点数量
LOAD CSV

用于从CSV文件中导入数据

  • CSV文件的URL可以由FROM后面紧跟的任意表达式来指定
  • 需要使用AS来为CSV数据指定一个常量
  • LOAD CSV支持gzip、Deflate和ZIP压缩的资源
  • CSV文件可以存在数据库服务器上,通过file:///URL来访问。LOAD CSV也支持通过HTTPS、HTTP、FTP来访问CSV文件
  • LOAD CSV支持HTTP重定向,但基于安全考虑重定向时不能该表协议类型,比如冲HTTPS到HTTP
MERGE

确保图数据库中存在某个特定的模式,如果不存在就创建它,如果存在则合并属性(逻辑或)

MATCH (person:Person) MERGE (city:City { name: person.bornIn }) RETURN city
MERGE (keanu:Person { name: 'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
RETURN keanu.name, keanu.created
MERGE (person:Person)
ON MATCH SET person.found  = True
RETURN person.name, person.found
MERGE (keanu:Person { name: 'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
ON MATCH SET keanu.lastSeen = timestamp(), keanu.found = True
RETURN keanu.name, keanu.created, keanu.lastSeen
// 如果节点不存在则设置created属性,否则设置lastSeen和found属性
CREATE CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
CREATE CONSTRAINT ON (n:Person) ASSERT n.role IS UNIQUE
MERGE (michael:Person{ name: 'Michael Douglas', role: 'Grodon Gekko' }) RETURN michael
SET

用于更新节点的标签以及节点和关系的属性

MATCH (n { name: 'Andres' }) SET n.name = NULL RETURN n // 删除节点属性
MATCH (at { name: 'Andres' }), (pn { name: 'Peter' }) SET at = pn RETURN at, pn // 复制属性

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值