文章目录

  • docker运行neo4j
  • CQL
    • create创建一个节点
    • match获取数据
    • RETURN子句
    • MATCH & RETURN匹配和返回
    • 关系
    • where子句
    • delete子句
    • remove子句
    • SET子句
    • ORDER BY子句
    • UNION子句
    • AS子句用于给一些别名
    • UNION ALL子句
    • LIMIT子句
    • SKIP子句
    • MERGE命令
    • IN操作符
    • 字符串函数
    • AGGREGATION聚合
    • 关系函数
    • 索引
    • UNIQUE约束

docker运行neo4j

  1. 拉取最新的neo4j镜像:
docker pull neo4j
  1. 运行Neo4j 容器:
docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:latest
  1. 打开Neo4j 浏览器管理界面:
http://10.141.211.163:7474

CQL

create创建一个节点

!!CREATE命令总是向数据库添加新的节点,就算所有属性都相同也会添加进数据库

//没属性
CREATE (<node-name>:<label-name>)eg:
create (m1:Method)//有属性
CREATE (<node-name>:<label-name>{   <Property1-name>:<Property1-Value>........<Propertyn-name>:<Propertyn-Value>}
)eg:
create(m1:Method{modifier: 'public',returnType: 'int',methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert',params: ['java.lang.Object']}
)create(m2:Method{modifier: 'public',returnType: 'int',methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert',params: ['java.lang.Object']}
)create(s1:Sql{databaseName: 'jeesite',sql: 'select * from t1'}
)create(t1:Table{databaseName: 'jeesite',tableName: 'table1'}
)

match获取数据

!!!不可以单独使用,会报错

MATCH
(<node-name>:<label-name>
)eg: match (m1:Method)output:
ERROR
Neo.ClientError.Statement.SyntaxError
Neo.ClientError.Statement.SyntaxError: Query cannot conclude with MATCH (must be RETURN or an update clause) (line 1, column 1 (offset: 0))
"match (m1:Method)"

RETURN子句

!!!不可以单独使用,会报错

RETURN <node-name>.<property1-name>,........<node-name>.<propertyn-name>eg:
return m1.methodNameoutput:ERROR
Neo.ClientError.Statement.SyntaxError
Neo.ClientError.Statement.SyntaxError: Variable `m1` not defined (line 1, column 8 (offset: 7))
"return m1.methodName"

MATCH & RETURN匹配和返回

在Neo4j CQL中,我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据。

match (m1: Method)
return m1.methodName,m1.returnTypematch (m1:Method)
return m1

关系

//节点已存在
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE  (<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE  (<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>//节点不存在
CREATE  (<node1-label-name>:<node1-name>)-[<relationship-label-name>:<relationship-name>]->(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>eg:
match (m2:Method{methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'}),(m1:Method{ methodName: 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert'})
create (m2)-[r:MethodCall{traceId:6574973980984213592}]->(m1)

where子句

WHERE <condition> <boolean-operator> <condition>

<condition>语法:

<property-name> <comparison-operator> <value>
eg:
MATCH (m1:Method)
WHERE m1.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'
AND m1.modifier = 'public'
RETURN m1match (m2:Method),(m1:Method)
where m2.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogService.insert'
and m1.methodName = 'com.thinkgem.jeesite.modules.sys.dao.LogDao.insert'
create (m2)-[r:MethodCall{traceId:6574973980984213592}]->(m1)

delete子句

  • 删除节点。
  • 删除节点及相关节点和关系。
//使用逗号(,)运算符来分隔节点名。
DELETE <node-name-list>eg:
match (m2:Method)-[r]-(m1:Method)
delete r

remove子句

  • 使用Neo4j CQL SET子句向现有节点或关系添加新属性。
  • 使用Neo4j CQL REMOVE子句来删除节点或关系的现有属性
  • Neo4j CQL DELETE和REMOVE命令之间的相似性:这两个命令不应单独使用。两个命令都应该与MATCH命令一起使用。
REMOVE <property-name-list>//<property-name-list> <属性名称列表>语法
<node-name>.<property1-name>,
<node-name>.<property2-name>,
....
<node-name>.<propertyn-name> eg:
MATCH (book { id:122 })
REMOVE book.price
RETURN book//REMOVE一个Label子句语法:
REMOVE <label-name-list>
//<label-name-list>语法
<node-name>:<label2-name>,
....
<node-name>:<labeln-name> eg:删除
MATCH (m:Movie)
REMOVE m:Picture

SET子句

  • 向现有节点或关系添加新属性
  • 添加或更新属性值
MATCH (m1:Method)-[r]-(m2:Method)
SET r.scenarioId = 23333, r.scenarioName = 's1'
RETURN r

ORDER BY子句

ORDER BY  <property-name-list>  [DESC]eg:
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name DESC

UNION子句

它将两组结果中的公共行组合并返回到一组结果中。它不从两个节点返回重复的行。

限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。

<MATCH Command1>UNION
<MATCH Command2>

AS子句用于给一些别名

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,dc.valid_from as valid_from,dc.valid_to as valid_to

UNION ALL子句

它结合并返回两个结果集的所有行成一个单一的结果集。不过滤它们重复行!!

限制: 结果列类型,并从两个结果集的名字必须匹配,这意味着列名称应该是相同的,列的数据类型应该是相同的。

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,cc.valid_from as valid_from,cc.valid_to as valid_to
UNION ALL
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,dc.valid_from as valid_from,dc.valid_to as valid_to

LIMIT子句

MATCH (emp:Employee)
RETURN emp
LIMIT 2

SKIP子句

过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果。
(如果我们要从CQL查询结果集底部修整结果,那么我们应该使用CQL LIMIT子句。)

//只返回底部的1个结果,也就是最后一行
match(m:Method)
return m
skip 1

MERGE命令

  • 创建节点,关系和属性
    -为从数据库检索数据

Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果;如果它不存在于图中,则它创建新的节点/关系并返回结果

!!CREATE命令总是向数据库添加新的节点,就算所有属性都相同也会添加进数据库

MERGE = CREATE + MATCHMERGE (<node-name>:<label-name>
{<Property1-name>:<Pro<rty1-Value>.....<Propertyn-name>:<Propertyn-Value>
})

IN操作符

MATCH (e:Employee)
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno

字符串函数

UPPER (<input-string>)
LOWER (<input-string>)
SUBSTRING(<input-string>,<startIndex> ,<endIndex>)

AGGREGATION聚合

eg:MATCH (e:Employee) RETURN COUNT(*)MATCH (e:Employee)
RETURN MAX(e.sal),MIN(e.sal)MATCH (e:Employee)
RETURN SUM(e.sal),AVG(e.sal)

关系函数


MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN STARTNODE(movie)MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN ENDNODE(movie)MATCH (a)-[movie:ACTION_MOVIES]->(b)
RETURN ID(movie),TYPE(movie)

索引

CREATE INDEX ON :<label_name> (<property_name>)eg:
CREATE INDEX ON :Customer (name)DROP INDEX ON :<label_name> (<property_name>)

UNIQUE约束

  • 避免重复记录。
  • 强制执行数据完整性规则。
CREATE CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUEeg:
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUEDROP CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUEeg:
DROP CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE

[Neo4j] CQL命令相关推荐

  1. Neo4j - CQL简介

    CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. Neo4j CQL - 它是Neo4j图形数据库的查询语言. 它是一种声明性模式匹配语言 ...

  2. Neo4j CQL简介

    CQL CQL 代表 Cypher 查询语言.像 Orcale 数据库具有查询语言 SQL,Neo4j 具有 CQL 作为查询语言. Neo4j CQL Neo4j 图形数据库的查询语言: 一种声明性 ...

  3. Neo4j CQL(附springboot集成neo4j)

    CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. 常用的Neo4j CQL命令/条款如下: S.No. CQL命令/条 用法 1. CREA ...

  4. Neo4j CQL - (3) -RETURN子句

    Neo4j CQL RETURN子句用于 - 检索节点的某些属性 检索节点的所有属性 检索节点和关联关系的某些属性 检索节点和关联关系的所有属性 RETURN命令语法: RETURN <node ...

  5. neo4j CQL使用

    neo4j CQL使用 Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言.像Oracle数据库具有查询 语言SQL,Neo4j具有CQL作为查询语言. 它是Neo4 ...

  6. Neo4j - CQL使用

    3.1 Neo4j - CQL简介 Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言.像Oracle数据库具有查询 语言SQL,Neo4j具有CQL作为查询语言. ...

  7. Neo4j CQL高级

    我们先准备脚本,创建数据,以便后续使用 // 删除所有的节点和关系 MATCH(n) OPTIONAL MATCH (n)-[r]-() DELETE n,r // 创建Person 的节点 CREA ...

  8. neo4j启动命令的小tips

    neo4j启动命令的小tips neo4j是知识图谱领域常用的图数据库.一般来说,我们都是使用的是社区版(community)的,因为这玩意简单且免费. 而对于社区版的neo4j,我们一般都是通过在t ...

  9. Neo4j CQL(函数、索引、约束)、备份恢复、优化

    一.CQL高级 1.CQL函数 字符串函数 MATCH (p:Person) RETURN ID(p),LOWER(p.character) match(p:Person) return p.char ...

最新文章

  1. sudo及其配置文件sudoers
  2. htmlparser新建tag类(以iframe标签为例)
  3. 金融领域下的数据挖掘算法应用:AdaBoost模型摩天
  4. 2015第29周五AOP
  5. java5新特性_5分钟了解Java 12 八大新特性
  6. 全国首家百度大脑创新体验中心启动,中关村创业大街AI产业创新生态再升级...
  7. Hello~CSND
  8. HBase二级索引实现方案
  9. golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏
  10. ICCV 2019|70 篇论文抢先读,含目标检测/自动驾驶/GCN/等(提供PDF下载)
  11. 抖音测试软件app,抖音抑郁症测试app
  12. [前端框架]-VUE(下篇)
  13. IE浏览器版本切换解决的问题
  14. Unix 开机时如何自启动oracle
  15. C64+ cache资料集(更新中)
  16. 5.1节快乐!AMD-INTEL双显卡切换补丁v0.1beta发布
  17. 楼层标高怎么引上去_高层建筑施工标高传递的简易方法
  18. python的学习笔记案例1--汇率兑换4.0
  19. 170604 逆向-CrackMe之013
  20. ios wkweb设置图片_iOS WKWebView识别H5中的图片资源

热门文章

  1. Nexus5刷Firefox OS 2.0
  2. java 快递项目_基于SpringBoot开发的Java快递代拿系统
  3. UE4 利用Mixamo自动绑骨并导入虚幻4
  4. 阿里云DataWorks数据集成(DataX)架构实践分享
  5. 如何用云服务器进行深度学习
  6. 广东高科技产业商会会长王理宗:回眸经典故事 重燃青春岁月
  7. c# word文档基本操作 (上)
  8. 微软搜索战略全盘革新 计划数月内发布“Kiev”
  9. Hadsky_v6.4.2轻论坛短信插件
  10. 软件测试这篇就够啦~