本文共 5444 字,大约阅读时间需要 18 分钟。
docker pull neo4j
docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:latest
http://10.141.211.163:7474
!!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 (: )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. , ........ . eg:return m1.methodNameoutput:ERRORNeo.ClientError.Statement.SyntaxErrorNeo.ClientError.Statement.SyntaxError: Variable `m1` not defined (line 1, column 8 (offset: 7))"return m1.methodName"
在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
<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)
//使用逗号(,)运算符来分隔节点名。DELETEeg:match (m2:Method)-[r]-(m1:Method)delete r
REMOVE// <属性名称列表> 语法 . 属性名称列表>, . , .... . eg:MATCH (book { id:122 })REMOVE book.priceRETURN book//REMOVE一个Label子句语法:REMOVE // 语法 : , .... : eg:删除MATCH (m:Movie) REMOVE m:Picture
MATCH (m1:Method)-[r]-(m2:Method)SET r.scenarioId = 23333, r.scenarioName = 's1'RETURN r
ORDER BY[DESC]eg:MATCH (emp:Employee)RETURN emp.empid,emp.name,emp.salary,emp.deptnoORDER BY emp.name DESC
它将两组结果中的公共行组合并返回到一组结果中。它不从两个节点返回重复的行。
限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
UNION
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
它结合并返回两个结果集的所有行成一个单一的结果集。不过滤它们重复行!!
限制: 结果列类型,并从两个结果集的名字必须匹配,这意味着列名称应该是相同的,列的数据类型应该是相同的。
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
MATCH (emp:Employee) RETURN empLIMIT 2
过滤或限制查询返回的行数。 它修整了CQL查询结果集顶部的结果。
(如果我们要从CQL查询结果集底部修整结果,那么我们应该使用CQL LIMIT子句。)//只返回底部的1个结果,也就是最后一行match(m:Method)return mskip 1
Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果;如果它不存在于图中,则它创建新的节点/关系并返回结果
!!CREATE命令总是向数据库添加新的节点,就算所有属性都相同也会添加进数据库
MERGE = CREATE + MATCHMERGE (: { : ..... : })
MATCH (e:Employee) WHERE e.id IN [123,124]RETURN e.id,e.name,e.sal,e.deptno
UPPER ()LOWER ( )SUBSTRING( , , )
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 : ( )
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/