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
网友评论