Docker 运行

docker run  --name neo4j -p 7474:7474 -p 7687:7687  -d  --volume=/data/apps/neo4j:/data neo4j

默认用户名密码为:neo4j/neo4j,也可通过指定参数 --env=NEO4J_AUTH=none 取消认证校验。启动成功后,文件目录结构如下:


然后通过浏览器访问:http://localhost:7474/browser/ 通过官方提供的web管理界面体验功能。



使用 Cypher 语句

创建节点

使用以下语句创建名字为 Mark 的节点

CREATE (friend:Person {name: 'Mark'})
RETURN friend

结果如下图:


接下来再创建另一个名字为 Jennifer 的节点

CREATE (j:Person {name: 'Jennifer'})
RETURN j


建立关系

用下面的语句在 Mark 和 Jennifer 直接创建关系,关系名字为:IS_FRIENDS_WITH

MATCH (jennifer:Person {name: 'Jennifer'})
MATCH (mark:Person {name: 'Mark'})
CREATE (jennifer)-[rel:IS_FRIENDS_WITH]->(mark)


然后继续看看创建的关系是什么样的

MATCH (p:Person)-[r:IS_FRIENDS_WITH]->(f:Person) RETURN p,r,f


两个节点用名字为:IS_FRIENDS_WITH 的线连接起来,再看一下数据结构:


不同类型节点创建关系类似

条件过滤查询及分页

等值查询

有两种方式,结果一样

MATCH (j:Person) WHERE j.name = 'Jennifer'
RETURN j;

MATCH (j:Person {name: 'Jennifer'})
RETURN j;


模糊查询

模糊查询效果类似 SQL 语句中的 LIKE,在 Cypher 中使用正则:

match (p:Person) where 1=1 and p.name =~ 'Jen.*' return p


相应的 NOT LIKE 语法

match (p:Person) where 1=1 and not (p.name =~ 'Jen.*') return p


分页查询

分页查询语法与 Mysql 类似,Mysql 中使用 LIMIT OFFSET 过滤结果集,Cypher 中使用 SKIP + LIMIT 

MATCH (p:Person) RETURN p SKIP 0 LIMIT 3



参考:

https://hub.docker.com/_/neo4j

https://neo4j.com/developer/cypher/