zoukankan      html  css  js  c++  java
  • Cyper 笔记

    添加

    // 创建节点
    CREATE (n:MOVIE{name:"电影"})
    
    // 创建节点
    create (n:Test) 
    set n.name="Test"
    
    // 创建关系
    MATCH (cust:Customer),(cc:CreditCard) 
    WHERE cust.id = "1001" AND cc.id= "5001" 
    CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc) 
    RETURN r
    

    删除

    // 删除节点
    MATCH (cc: CreditCard)-[rel]-(c:Customer) 
    DELETE cc,c,rel
    
    // 批量删除label的属性
    MATCH (book { id:122 })
    REMOVE book.price
    RETURN book
    
    // 删除单个节点的属性
    match (n:Book{title:"kg"}) remove n.pages
    
    // 删除多个属性
    match (n:Book{title:"Neo4j Tutorial2"}) remove n.pages, n.price
    

    更新

    // 增加/更新 某个节点的属性值
    MATCH (n:Book{title:"kg"}) set n.test2="test" return n
    
    // 批量增加属性
    MATCH (dc:Book)
    SET dc.testss = 3456
    

    排序

    // 排序
    MATCH (dc:Book)
    return dc
    order by dc.id desc
    

    UNION

    // UNION ALL 返回包含重复结果的行
    // UNION 返回公共结果,不返回重复的行
    // 类名和数据类型要相同,(只需要as后的列名相同)
    match (n:Movie) where n.id<=2  return n.id as id, n.price as price
    union 
    match(m:Movie) where m.id>2 return m.id as price, m.price as id
    

    MERGE

    // create 会创建重复的行(如果记录存在,就创建一个同样的节点)
    // merge 不会添加重复的行(如果记录已存在就不添加)
    MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})
    

    UNWIND

    // 遍历列表
    unwind [1,2,3,4] as b
    return b
    
    // 使用with
    with [1,2,3,4] as a
    unwind a as b
    return b
    
    // 去重后输出
    with [1,2,3,3,3] as list
    unwind list as item
    with distinct item
    return item
    
    // 遍历列表
    with [1,2] as a , [3,4] as b
    unwind (a + b) as c 
    return c
    
    // 遍历列表(只能解包一层)
    with [1,2,[7,8]] as a, [3,4] as b
    unwind (a + b) as c 
    return c
    
    // 解两层
    with [1,2,[3,4]] as nest
    unwind nest as hidden
    unwind hidden as out
    return out
    

    SKIP && LIMIT

    // limit 限制取的结果条数
    match (n:Book)
    return n.id
    limit 2
    
    // 跳过第一个结果
    match (n:Book)
    return n.id
    skip 1
    
    // 跳过第一个,从第二个开始取两条
    match (n:Book)
    return n.id
    skip 1
    limit 2
    

    NULL

    // 创建一个属性全为null的节点
    create (n:Movie)
    
    // 判断是否为NULL
    match (n:Movie) 
    where n.price is not null 
    return n.name
    
    // 判断是否为NULL
    match (n:Movie) 
    where n.price is null 
    return n.name
    
    // 用IN来判断是否包含
    match (n:Movie)
    where n.name in ["电影1", '电影2']
    return n.name
    

    CASE

    一种跟在return语句之后的关键字。可以对返回的数据进行判断。比如空值怎么处理

    • 格式1:
    CASE var_name
        WHEN var_value THEN result
        [WHEN var_value2 THEN result2]
        [ELSE default_result]
    END
    
    match (n:VENUE) 
    return CASE n.VENUE_TYPE
    WHEN "" THEN "其他"
    WHEN NULL THEN "NULL"
    ELSE n.VENUE_TYPE END AS VENUE_TYPE, count(n) as COUNT
    
    • 格式2:
    CASE
    WHEN predicate THEN result
    [WHEN predicate THEN result]
    [ELSE default]
    END 
    [AS NEW_NAME]
    
    match (n:VENUE) 
    return CASE 
    WHEN n.VENUE_TYPE="" OR  n.VENUE_TYPE="" IS NULL THEN "其他"
    ELSE n.VENUE_TYPE END AS VENUE_TYPE, count(n) as COUNT
    

    关系

    关系必须有方向,关系可以反着写

    // 创建关系(正向)
    match (m:Movie), (n:Movie)
    where m.name="电影111" and n.name="电影2"
    create (m)-[r:R{name:"关系"}]->(n)
    
    // 创建关系(反向)
    match (m:Movie), (n:Movie)
    where m.name="电影111" and n.name="电影2"
    create (m)<-[r:R{name:"关系2"}]-(n)
    
    // 同时指定两个方向会报错
    match (m:Movie), (n:Movie)
    where m.name="电影111" and n.name="电影2"
    create (m)<-[r:R{name:"关系2"}]->(n)
    
    // 没有指定方向也会报错
    match (m:Movie), (n:Movie)
    where m.name="电影111" and n.name="电影2"
    create (m)-[r:R{name:"关系2"}]-(n)
    
    // 查询关系(返回关系不会显示在可视化中)
    match (m:Movie)-[r:R]->(n:Movie)
    where m.name="电影111" and n.name="电影2"
    return r
    
    // 查询关系可以反向(n->m 的关系)
    match (m:Movie)<-[r:R]-(n:Movie)
    where m.name="电影111" and n.name="电影2"
    return r
    
    // 查询关系也可以不写方向(会查到两个方向的关系)
    match (m:Movie)-[r:R]-(n:Movie)
    where m.name="电影111" and n.name="电影2"
    return r
    
    // 多跳的关系
    match p=(m:Movie{name:"电影2"})-[r]-(n:Movie{name:"电影111"})-[r2]-(t:Movie{name:"电影5"})
    return p
    

    控制路径长度

    // 展开4次,显示路径长度<=4的所有节点和路径。每次都展开相连的所有节点,下一次再继续展开外层的节点
    match p=(n:VENUE{OBJ_NAME:"AAA"})-[r*4]-() return p
    
    // 只显示路径长度在[2,3]范围内的路径,太短的路径不会显示(比如长度为1的路径)
    match p=(n:FJS{STATION_NAME:"AAA"})-[r*2..3]-() return p
    
    // [1, 2]范围内的路径
    match p=(n:FJS{STATION_NAME:"AAA"})-[r*..2]-(m) return p
    
    // 指定长度的路径
    match p=(n:FJS{STATION_NAME:"AAA"})-[r2..2]-(m) return p
    
    // 关系可以加上逻辑或操作(|)
    match p=(m:SUBSTATION{STATION_NAME:"AAA"})-[r:END_STATION|:PARTNER|:ORIGIN_LINE*2..2]-(n)
    return p
    

    分组

    match (n:SUBSTATION) where n.SUPPLY_TYPE is not NULL
    RETURN n.SUPPLY_TYPE, COUNT(n)
    

    字符串函数

    功能 描述
    UPPER 它用于将所有字母更改为大写字母
    LOWER 它用于将所有字母改为小写字母
    SUBSTRING 它用于获取给定String的子字符串SUBSTRING(str,start,end), 截取的范围是[start, end)
    REPLACE 它用于替换一个字符串的子字符串
    match (n:Movie)
    where n.name="AAAbbb"
    return UPPER(n.name), upper(n.name), lower(n.name),substring(n.name, 0, 3)
    
    // 替换子串(不会改变原字符串)
    match (n:Movie)
    where n.name="AAAbbb"
    return replace(n.name, "AAA", "CCC")
    

    聚合函数

    聚集功能 描述
    COUNT 它返回由MATCH命令返回的行数
    MAX 它从MATCH命令返回的一组行返回最大值
    MIN 它返回由MATCH命令返回的一组行的最小值
    SUM 它返回由MATCH命令返回的所有行的求和值
    AVG 它返回由MATCH命令返回的所有行的平均值
    match (n:Movie)
    return max(n.id), min(n.id), avg(n.id), count(n.id)
    

    关系函数

    功能 描述
    STARTNODE 它用于知道关系的开始节点
    ENDNODE 它用于知道关系的结束节点
    ID 它用于知道关系的ID
    TYPE 它用于知道字符串表示中的一个关系的TYPE
    // 这两个id并不相同,id(n)是系统自动加上的id,n.id是用户加上的id属性。
    match (n:Movie)
    return id(n), n.id
    
    // 返回关系的类型,不能返回node的类型(会报错)
    match (n:Movie)-[r]->(m:Movie)
    where n.name="电影111" and m.name="电影2"
    return TYPE(r)
    
    match (n:Movie)-[r]->(m:Movie)
    where n.name="电影111" and m.name="电影2"
    return startnode(r), endnode(r)
    

    索引

    CREATE INDEX ON :<label_name> (<property_name>)

    // 新建索引
    CREATE INDEX ON :Customer (name)
    

    DROP INDEX ON :<label_name> (<property_name>)

    // 删除索引
    DROP INDEX ON :Customer (name)
    

    UNIQUE约束

    CREATE CONSTRAINT ON (<label_name>)
    ASSERT <property_name> IS UNIQUE

    // 创建索引,如果已有的数据有重复的,那么建立索引会失败。
    create constraint on (m:Movie)
    assert m.name is unique
    

    DROP CONSTRAINT ON (<label_name>)
    ASSERT <property_name> IS UNIQUE

    // 删除索引
    drop constraint on (m:Movie)
    assert m.name is unique
    
  • 相关阅读:
    uni-app下[manifest.json][h5.router.base]优先于vue.config.js下的publicPath
    vue.config.js[publicPath],Webpack[publicPath],process.env[BASE_URL],vue.router[base],uni-app[manifest.json][h5.router.base]
    vue中mode,.env,.env[mode],配置文件,process.env.NODE_ENV
    vue使用bpmn流程管理器
    element-ui 调试 el-select不能正常工作 不报错
    VUE用浏览器调用USB摄像头
    2020最新版《神经网络与深度学习》中文版
    《推荐系统实践》 高清版 下载
    《推荐算法在业界的应用实践合集》 PDf 下载
    《机器学习》周志华-西瓜书 高清 PDF 下载
  • 原文地址:https://www.cnblogs.com/twilight0402/p/13509130.html
Copyright © 2011-2022 走看看