CYPHER 语句(Neo4j)

创建电影关系图

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix) CREATE (Emil:Person {name:"Emil Eifrem", born:1978})
CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix) CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixReloaded),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixReloaded),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixReloaded),
(LillyW)-[:DIRECTED]->(TheMatrixReloaded),
(LanaW)-[:DIRECTED]->(TheMatrixReloaded),
(JoelS)-[:PRODUCED]->(TheMatrixReloaded) (Keanu)-[:ACTED_IN {roles:['Julian Mercer']}]->(SomethingsGottaGive),
(NancyM)-[:DIRECTED]->(SomethingsGottaGive),
(NancyM)-[:PRODUCED]->(SomethingsGottaGive),
(NancyM)-[:WROTE]->(SomethingsGottaGive) 

查找

查看节点所有属性

match (n:LOGIC_SUBJECT) unwind keys(n) as key return distinct key;

属性查找

#查找无age属性的节点
match(n:Person) WHERE n.age is not null RETURN n
#查找有age属性的节点
match(n:Person) WHERE n.age is null RETURN n

查找两个节点是否存在多个相同关系

match(m)-[r]-(n) where size((m)-[:relationship]-(n))> return *

模糊查找

#查找name中以"J"开头的内容
match(n:Person) where n.NAME=~ 'J.*' return n

查询标签属性信息

match (n:场景) unwind keys(n) as key return distinct key;

新增

新增节点

#新增Jack T 和 Tom T 两个人
create (:Person{name:'Jack T'}),(:Person{name:'Tom T'})
match(m:Person{name:'Jack T'}),(n:Person{name:'Tom T'}) return n,m

新增边

#Jack T 是Tom T的朋友
match(m:Person{name:'Jack T'}),(n:Person{name:'Tom T'}) create (m)-[r:friend_to]->(n) return n,r,m

新增属性

match(n:Person) where n.name='Jack T'  set n+={age:15} return n

修改

修改属性

#单个节点
match(n:Person) where n.name='Keanu Reeves' set n.age=16 return n #批量节点 如果没有改属性,则会新增
match(n:Person) set n.age=16 return n

复制属性

match (m { name:'Keanu Reeves' }),(n { name: 'Hugo Weaving' }) set n = m return n,m

修改节点名称

match(n:INTERFACE) set n:T_BDM_ITFS
match(n:T_BDM_ITFS) remove n:INTERFACE

字符串处理

截取部分字符串

MATCH (n:LOGIC_SUBJECT) RETURN substring(n.NAME,,)
 

删除

删除属性

#单个节点删除属性
match(n:Person) where n.age=17 remove n.age
#批量删除属性
match(n:Person) remove n.age

导入

CSV文件

#import 文件夹下
load csv with headers from 'file:///fileName.csv' as newLables
create(n:LableNewName) set Lable = newLables LOAD CSV FROM 'file:///abc.csv' AS line
CREATE (:T_BDM_PANORAMA {name: line[2], sid:line[1]})

格式转换

LOAD CSV FROM 'https://neo4j.com/docs/developer-manual/3.3/csv/artists.csv' AS line
#字符串转换成整型 toInteger
CREATE (:Artist { name: line[], year: toInteger(line[])})

数据迁移

match(n:PROJECT_SG_CIM3_5) return n.name as name,id(n) as oldID;

match(n:PROJECT_SG_CIM3_5)-[r]->(m:PROJECT_SG_CIM3_5) return id(startNode(r)) as startId_BUS_CLASS,id(endNode(r)) as endId_BUS_CLASS;

load csv with headers from "file:///a661.csv" as row match (n:LOGIC_OBJECT{oldID:row.startId_BUS_CLASS}),(m:LOGIC_OBJ_DETAIL{oldID:row.endId_BUS_CLASS}) create (n)-[:LOG_OBJ_TO_OBJ_DET]->(m);

LOAD CSV WITH HEADERS  FROM "file:///label.csv" AS line
create (:SYS{id:line.ID,name:line.NAME}) load csv with headers from "file:///relation.csv" as row match (n:SYS{id:row.first}),(m:SYS{id:row.second})
create (n)-[:LINE{name:row.NAME}]->(m);

CYPHER 语句(Neo4j)的更多相关文章

  1. neo4j 基本概念和Cypher语句总结

    下面是一个介绍基本概念的例子,参考链接Graph database concepts: (1) Nodes(节点) 图谱的基本单位主要是节点和关系,他们都可以包含属性,一个节点就是一行数据,一个关系也 ...

  2. neo4j中cypher语句多个模糊查询

    总结一下经验: neo4j中,cypher语句的模糊查询,好像是个正则表达式结构. 对于一个属性的多个模糊查询,可以使用如下写法: 比如,查询N类型中,属性attr包含'a1'或者'a2'的所有节点. ...

  3. Cypher 语句实战

    Cypher 语句实战 下载和安装 Neo4j windows 桌面版- 环境设置 https://www.w3cschool.cn/neo4j/neo4j_exe_environment_setup ...

  4. Neo4J(Cypher语句)初识

    欢迎各路大神临幸寒舍 以下节点标签为people,friend,用户自己也可以设置成其他标签,查询时需要用到标签.这个标签可以类比为关系数据库中的表名 创建节点.关系 创建节点(小明):create ...

  5. neo4j常用cypher语句

    阅读更多 1.删除带有关系的节点   a.先删除关系 match (n:Node)-[r:关系名称]-() where (n...条件) delete r   b.删除节点 match (n:Node ...

  6. Cypher查询语言--Neo4j 入门 (一)

    目录 操作符 参数 标识符 注解 Start 通过id绑定点 通过id绑定关系 通过id绑定多个节点 所有节点 通过索引查询获取节点 通过索引查询获取关系 多个开始点  Cypher是一个描述性的图形 ...

  7. Cypher查询语言--Neo4j之聚合函数(五)

    目录 聚合Aggregation 计数 计算节点数 分组计算关系类型 计算实体数 计算非空可以值数 求和sum 平均值avg 最大值max 最小值min 聚类COLLECT 相异DISTINCT 聚合 ...

  8. cypher语句摘要

    match(n) return n 返回所有的节点和关系,只要有就返回,对节点和关系的查找不做条件限制. match(n:Student) return n 返回所有的Student节点 创建节点:c ...

  9. Cypher查询语言--Neo4j 之高级篇 (六)

    目录 排序Order by 通过节点属性排序节点 通过多节点属性排序节点 倒序排列节点 空值排序 Skip 跳过前三个 返回中间两个 Limit 返回第一部分 函数Functions 判断 All A ...

随机推荐

  1. Linux间传输文件 scp

    scp scp使用ssh来传输数据,使用相同的认证方式,所以配置好ssh后,根据用户名和密码来读写远程文件.基本命令如下,输完命令,回车,输入远程用户对应的密码: 从本机复制到远程: 文件:scp F ...

  2. Java 解决Emoji表情过滤问题

    Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错. 原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去 ...

  3. Centos 8下命令行界面支持鼠标

    yum install gpm* service gpm start systemctl enable gpm.service

  4. 《ES6标准入门》(阮一峰)--8.函数的扩展

    1.函数参数的默认值 基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log ...

  5. java.lang.NumberFormatException: For input string: "F"

    在通过myBatis执行sql时,报错: java.lang.NumberFormatException: For input string: "F" xml中sql内容为: &l ...

  6. P1056 组合数的和

    P1056 组合数的和 转跳点:

  7. UVA - 10305 Ordering Tasks(拓扑排序)

    题意:给定优先关系进行拓扑排序. 分析:将入度为0的点加入优先队列,并将与之相连的点入度减1,若又有度数为0的点,继续加入优先队列,依次类推. #pragma comment(linker, &quo ...

  8. FreeCAD stp文件基于python脚本操作

    FreeCAD对于3D模型处理这块的东西封装的还是很完善的,所以移植这块的东西还是有必要的! 首先下载FreeCAD编译好的库: https://www.freecadweb.org/wiki/Dow ...

  9. 129-PHP子类不能访问父类private修饰的类成员

    <?php class father{ //定义father类 //定义private修饰的类成员和方法 private $hair='curly hair'; private function ...

  10. ACM-数细胞

    题目描述:数细胞 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完成 ...