图数据库neo4j安装使用记录

查看当前系统版本:lsb_release -a

下载neo4j安装包,速度巨慢:wget -c https://neo4j.com/artifact.php?name=neo4j-community-3.4.14-unix.tar.gz 

解压缩至/usr/local目录:tar -zxvf artifact.php\?name\=neo4j-community-3.4.14-unix.tar.gz -C /usr/local

重命名:cd /usr/local     -》     mv neo4j-community-3.4.14*/  neo4j

配置环境变量:vim /etc/profile

     #neo4j

     export NEO4J_HOME=/usr/local/neo4j 

     export PATH=$PATH:$NEO4J_HOME/bin

使立即生效:source /etc/profile

修改conf/neo4j.conf 配置文件54行如下: cd /usr/local/neo4j/conf/      vi neo4j.conf

将改行注释放出来就可以了

启动neo4j服务:neo4j start

浏览器登录:192.168.0.105:7474 (此处ip换成实际部署的服务器的ip),初始密码为:neo4j,登录后设置新密码,最后进入如下界面,可以点击页面上的“Start Learning”进行初步的学习 Neo4j。

至此,Neo4j 已经在 Ubuntu 上安装好了。

----

neo4j图数据库的使用:Cypher是图形数据库Neo4j的查询语言,就像SQL在关系数据库中查询一样。

一、Node语法:

在cypher里面通过用一对小括号()表示一个节点,它在cypher里面查询形式如下 :

1、()代表匹配任意一个节点

2、(node1)代表匹配任意一个节点,并给它起了一个别名

3、(:Lable)代表查询一个类型的数据

4、(person:Lable)代表查询一个类型的数据,并给它起了一个别名

5、(person:Lable{name:"小王"})查询某个类型下,节点属性满足某个值的数据

6、(person:Lable{name:"小王",age:23})节点的属性可以同时存在多个,是一个AND的关系

二、关系语法:

关系用一对-组成,关系分为有方向的进和出,如果是无方向就是进和出都查询

1、-->指向一个节点

2、-[role]->给关系加个别名

3、-[:acted_in]->访问某一类关系

4、-[role:acted_in]->访问某一类关系,并加了别名

5、-[role:acted_in{role:["neo","hadoop"]}]->访问某一类关系下的某个属性的关系的数据

三、模式语法

模式语法是节点和关系查询语法的结合,通过模式语法我们可以进行我们想要的任意负责的查询

四、模式变量

为了增加模块化和减少重复,cypher允许把模式的结果指定在一个变量或者别名中,方便后续使用或操作

path=(:Person)-[:ACTED_IN]->(:Movie)

path是结果集的抽象封装,有多个函数可以直接从path里面提取数据如:

nodes(path):提取所有的节点

rels(path):提取所有的关系和relationships(path)相等

length(path):获取路径长度

五、条件

match:查询的主要关键词

create:类似sql里面的insert

filter , project , sort , page 等

----

一些实际的用法例子:

1、创建

create(:Movie {title:"驴得水",released:2016})  return p;

2、查询:

match(p:Person) return p; 查询Person类型的所有数据

match(p:Person{name:"sun"}) return p;查询名字等于sun的人

match(p1:Person{name:"sun"})-[rel:friend]->(p2) return p2.name,p2.age 查询sun的朋友的名字和年龄

match(old)..create(new) create(old)-[rel:dr]->(new) return new 对已经存在的节点和新建的节点建立关系

3、查询或更新

merge语法可以对已经存在的节点不做改变,对改变的部分会合并

MERGE (m:Movie{title:"Cloud Atlas"})

ON CREATE SET m.released = 2012

RTRUEN m

merge....on create set ... return 语法支持合并更新

4、筛选过滤

cypher过滤也是用的和SQL一样的关键词where

match(p1:Person) where p1.name = "sun" return p1;

等同于下面的

match(p1:Person{name:"sun"}) return p1

where条件里面支持and , or , xor ,not 等boolean运算符,在json串里面都是and,同事where里面还支持正则查询

5、结果集返回

MATCH (p:Person)

RETURN p,p.name as name,upper(p.name),coalesce(p.nickname,"n/a") AS nickname,

{name:p.name,label:head (labels(p))} AS person

结果集返回做去重    match(n) return distince n.name;

待续:https://blog.csdn.net/u010454030/article/details/53131229

--使用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章