一. 前言
本文主要使用Neo4j中常见的CQL语句实现一个简单的案例,是十分基础的。
作者的能力十分有限,若有文章有误,欢迎指正。若您有任何想法,欢迎交流。
二. Neo4j介绍
1. 什么是Neo4j
Neo4j是一个开源的NoSQL图形数据库,2003 年开始开发,使用 scala和java 语言,2007年开始发布。
- 是世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理;
- 采用属性图模型(Property graph model),极大的完善和丰富图数据模型;
- 专属查询语言 Cypher,直观,高效;
官网:https://neo4j.com/
2.Neo4j数据模型
Neo4j作为图数据库,数据模型肯定有别于常见的关系型数据库。
图数据库数据模型的主要构建块是:节点、关系、属性。
以下是一个简单的属性图例子:
不难看出,圆圈代表各个节点,各节点之间用有方向的箭头表示关系。
三. CQL语句
CQL代表Cypher查询语言,在Neo4j中,我们使用CQL语句对数据库进行操作。
以下是一些常用的CQL命令:
序号 | CQL命令 | 用法 |
---|---|---|
1 | CREATE | 创建节点,关系和属性 |
2 | MATCH | 检索有关节点,关系和属性数据 |
3 | RETURN | 返回查询结果 |
4 | WHERE | 提供条件过滤检索数据 |
5 | DELETE | 删除节点和关系 |
6 | REMOVE | 删除节点和关系的属性 |
7 | ORDER BY | 排序检索数据 |
8 | SET | 添加或更新标签 |
是不是与SQL语句有些类似?接下来,我们通过构建小猪佩奇的家庭关系图,学习简单的CQL语句。
1.创建
我们知道,小猪佩奇一家主要有猪爸爸、猪妈妈、佩奇、乔治。
我们在Neo4j中该如何表示呢,我们可以通过创建四个节点来表示他们。
我们通过如下的语句先来创建一个猪爸爸的节点。
create (:pig{name:'猪爸爸',age:10})
在此语句中,create()
创建了一个节点,括号内:
后面的pig为节点标签名称。
{}
内的键值对,表示该节点所拥有的属性。
我们也可以创建多个节点,各节点之间使用,
隔开:
create(:pig{name:"佩奇", age:5}),(:pig{name:"乔治", age:3});
此外,还可以在创建节点的同时创建关系。
--- 注意:这里会创建两个节点(猪爸爸和猪妈妈)
create(:pig{name:'猪妈妈',age:9})-[:夫妻{age:5}]