知识图谱:【图数据库Neo4j(四)】——Neo4j查询语言CQL

Cypher简介

Cypher查询语言,即CQL,是Neo4j图形数据库的查询语言。

实体/关系表示

实体表示:表示一个id值为“person1”的Person类型的实体,并记其名字为a

(a:Person {id:"person1"})

关系表示:表示一个actor关系,并记其名字为r

[r:actor]

实体/关系创建

实体创建:

CREATE(:Person {id:"acld9527",name:"王大锤"})

关系创建:要求涉及到的两个实体a和b是已经存在的

MATCH (a:Person),(b:Person) WHERE a.name="黄渤" and b.name="宁浩"
CREATE (a)-[:KNOWS]->(b), (b)-[:KNOWS]->(a)

实体/关系查询

实体查询:

MATCH(p:Person) WHERE p.name="黄渤" RETURN p

关系查询:

MATCH (m:Movie)[r:actor]>(p:Person) WHERE p.name="黄渤" RETURN *

实体/关系删除

实体删除:

MATCH(p:Person) WHERE p.id="ac1d9527" DELETE p

关系删除:

MATCH (a:Person)-[r:KNOWS]-(b:Person) WHERE a.name="黄渤" and b.name="宁浩"
DELETE r

实体修改

MATCH(p:Person) WHERE p.id="ac1d9527"  SET p.name="黄大锤"

最短路径查询

例:查询黄渤和汤姆·克鲁斯之间的最短路径

MATCH (a:Person),(b:Person),p=shortestpath((a)-[:actor*]-(b))
WHERE a.name="黄渤" and b.name="汤姆·克鲁斯"
RETURN p

CQL子句

  • WHERE子句:过滤MATCH查询的结果
  • SET子句:向现有节点或关系添加新属性
  • DELETE子句:删除节点及和节点相关的关系
  • REMOVE子句:删除节点或关系的现有属性
  • ORDER BY子句:对MATCH查询返回的结果进行排序
  • UNION子句:将两个不同的结果合并成一组结果(两组数据需要有相同的列名)
  • LIMIT子句:限制查询返回的行数
  • SKIP子句:跳过前几行,用法跟LIMIT相同
  • MERGE子句:创建节点、关系和属性,如果要创建的节点已经存在于数据库中了(即数据库中存在一个这样的节点/关系/属性),就不再执行创建命令

CQL函数

  • 字符串函数:用于在CQL查询中获取所需的结果
    • UPPER
    • LOWER
    • SUBSTRING
    • REPLACE
  • 聚合函数:可以对属性进行聚合
    • COUNT
    • MAX
    • MIN
    • SUM
    • AVG
  • 关系函数:获取关系的开始节点/结束节点/ID/关系类型等细节
    • STARTNODE
    • ENDNODE
    • ID
    • TYPE

参考链接

官方文档https://neo4j.com/docs/cypher-manual/current/
博文一https://segmentfault.com/a/1190000039118684
博文二https://www.zmonster.me/2019/04/30/neo4j-introduction.html
博文三https://www.w3cschool.cn/neo4j/neo4j_cql_relationship_functions.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值