美文网首页
[Neo4J] Cypher查询语言(CQL) 语法参考教程

[Neo4J] Cypher查询语言(CQL) 语法参考教程

作者: 爱上落入尘世间的你 | 来源:发表于2020-03-18 21:16 被阅读0次

    neo4j官方的javascript驱动是neo4j-driver, 可以在浏览器环境和node.js环境运行, 直接对数据库进行查询, 返回结果

    注意: 这不是一篇零基础的neo4j教程, 而是对于有一定neo4j基础的同学比较有用的参考手册, 可以快速的复习cql的语法, 也可以用作语法的参考手册在不记得一些细节的时候用来快速查询

    代码示例如下:

    const neo4j = require('neo4j-driver') // node.js
    import neo4j from 'neo4j-driver' // browser
    
    const driver = neo4j.driver(
                        'bolt://localhost:7687',
                        neo4j.auth.basic('neo4j', 'admin')
                    )
    
    const session = driver.session()
    const result = await session.run(cql)
    console.log(result)
    

    基本语法

    节点语法

    用圆括号() 用来表示节点
    (n)用来为节点赋予一个名字, 可以用来在需要时引用这个节点
    (n:label) 用来匹配有某个标签的节点
    (n:label:label:label2) 可以用来匹配具有多个标签的节点
    (n:label1:label2 {key:value}) 用对象字面量的方式, 通过节点的属性对节点进行筛选

    关系语法

    用方括号[]来表示关系
    关系与节点一样, 可以赋予一个名字以便于在别处引用, 也可以用标签来进行筛选
    [r] 表示一个关系被赋予到变量r, 可以在别处用r引用该关系
    [r:label] 用来匹配有某个标签的关系

    注意, 关系只能有一个标签, 不像节点可以有多个标签

    [r:label1 | :label2] 用来匹配多种关系中的一种
    [n:label1 | label2 {key:value}] 用对象字面量的方式, 通过节点的属性对节点进行筛选
    () -> [*3..5] -> () 用来表示变长关系, 即两个节点之间通过3-5个关系连接
    () -> [*3..] -> () 关系长度大于3
    () -> [*..5] -> () 关系长度小于5
    () -> [*] -> () 任意边界长度

    变长关系不能用于create和merge语句中

    match (n) - [:knows *1..2] - (n1)
    return n
    

    关系与节点的连接(单个横杠)

    - 表示双向连接
    -> 或者<- 表示单向连接
    例如:

    ()-[]-()
    ()->[]->()
    []<-()->[]->()
    

    节点与节点直接连接(两个横杠)

    如果不在意节点之间通过何种关系连接, 可以用--, -->, <--来直接连接节点与节点

    () -- () --> ()
    () --> () <-- ()
    

    节点之间通过关系连接代表着匹配的模式, 可以被赋予一个变量用来在需要时引用
    例如:

    acted_in = (:person) -> [:acted_in] -> (:movie)
    

    节点的id

    neo4j的节点id是整数类型, 由数据库内部自行维护, 在查询语句中可以用id(n)函数来获取

    match (n)
    where id(n)  = $id
    return n.name
    
    match (n)
    where id(n) in [1, 2, 3]
    return n.name
    

    语句可以分为3类

    读语句: match, optional match, where, start, aggregation, load csv
    写语句: create, merge, set, delete, remove, foreach, create unique
    通用语句: return, order by, limit, skip, with, unwind, union, call

    相关文章

      网友评论

          本文标题:[Neo4J] Cypher查询语言(CQL) 语法参考教程

          本文链接:https://www.haomeiwen.com/subject/xwthyhtx.html