博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Neo4j] CQL命令
阅读量:2341 次
发布时间:2019-05-10

本文共 5444 字,大约阅读时间需要 18 分钟。

文章目录

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 (
:
)eg: create (m1:Method)//有属性CREATE (
:
{
:
........
:
})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 (   
:
)eg: match (m1:Method)output:ERRORNeo.ClientError.Statement.SyntaxErrorNeo.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    
.
, ........
.
eg:return m1.methodNameoutput:ERRORNeo.ClientError.Statement.SyntaxErrorNeo.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 (
:
),(
:
)CREATE (
)-[
:
]->(
)RETURN
MATCH (
:
),(
:
)CREATE (
)-[
:
{
}]->(
)RETURN
//节点不存在CREATE (
:
)- [
:
]-> (
:
)RETURN
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>语法:

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 
eg:match (m2:Method)-[r]-(m1:Method)delete r

remove子句

  • 使用Neo4j CQL SET子句向现有节点或关系添加新属性。
  • 使用Neo4j CQL REMOVE子句来删除节点或关系的现有属性
  • Neo4j CQL DELETE和REMOVE命令之间的相似性:这两个命令不应单独使用。两个命令都应该与MATCH命令一起使用。
REMOVE 
//
<属性名称列表>
语法
.
,
.
, ....
.
eg:MATCH (book { id:122 })REMOVE book.priceRETURN book//REMOVE一个Label子句语法:REMOVE
//
语法
:
, ....
:
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  
[DESC]eg:MATCH (emp:Employee)RETURN emp.empid,emp.name,emp.salary,emp.deptnoORDER BY emp.name DESC

UNION子句

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

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

UNION

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_toUNIONMATCH (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_toUNION ALLMATCH (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 empLIMIT 2

SKIP子句

过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果。

(如果我们要从CQL查询结果集底部修整结果,那么我们应该使用CQL LIMIT子句。)

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

MERGE命令

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

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

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

MERGE = CREATE + MATCHMERGE (
:
{
:
.....
:
})

IN操作符

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

字符串函数

UPPER (
)LOWER (
)SUBSTRING(
,
,
)

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 :
(
)eg:CREATE INDEX ON :Customer (name)DROP INDEX ON :
(
)

UNIQUE约束

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

转载地址:http://imkvb.baihongyu.com/

你可能感兴趣的文章
13日cnblog会谈摘要
查看>>
MoreGoogle提供的网页缩略图服务
查看>>
每天到REFERER到我的网站上来的主页上去溜达一下
查看>>
北京羽毛球场地预定电话
查看>>
本周CNBlog例会:Grassland搜索的后台迁移
查看>>
Flickr的网络收藏夹服务
查看>>
用sed批量替换文件中的字符
查看>>
九型性格心理测试 (From Ulla Zang荣格的个人性格测验题目)
查看>>
[MT] 3.32升级备忘
查看>>
MT 3.33发布: 安全漏洞修正
查看>>
给Blog加上雅虎通PingMe服务:和网站用户即时聊天
查看>>
顶级域名注册分布统计:2006年09月 .com .de .net .uk .cn
查看>>
雅虎通可以批量添加MSN用户了
查看>>
应届生如何应聘雅虎中国/阿里巴巴工作职位
查看>>
豆瓣“我上”:一个blog就是一本有趣的书
查看>>
速度比较:GMail/MSN/Yahoo!Mail
查看>>
搜索引擎来路关键词的挖掘:百度统计的高级分析报告导出获取来源关键词
查看>>
C/C++题目--拷贝构造函数概念
查看>>
C/C++题目--深复制与浅复制
查看>>
数据结构教程--李春葆版(总结)之线性表-顺序存储结构练习题
查看>>