Neo4j与Cypher语言学习笔记(二)



  • 置顶:二次编辑(之前放错版了)

    Cypher语言简介

            首先我们已经知道Cypher语言是基于Neo4j平台,专门用来处理图数据库的一种查询语言,Cypher语言的优势在于它的书写能非常直观地体现出数据之间的逻辑关系。
            Cypher语言能完成对图数据库的CRUD操作,并且运行起来效率非常高,加上Neo4j的可视化工具,我们能够实时观察当前图数据库中的节点以及他们之间的关系。

    Cypher语言创建数据库

    基本要素
            Cypher语言操作的是一个图数据库,在一个图数据库中首先有节点(node),同时节点之间存在关系[relationship],而节点本身有一些属性{property},并且关系也会有属性。其中节点和关系是一个图数据库中最重要的组成部分,而属性可以使一个图中包含的信息更加丰富。在Cypher语言中,我们通过create语句来创建一个节点或者关系。

    节点(node)与标签(label)
            节点的表示是(node-name:label1-name:label2-name:label3-name),第一个冒号前的node-name是当前语句中的节点名,用来和同一条语句中的其他节点做区分,后面用冒号间隔开的label-name是这个节点在声明时所属的标签。
            在一个关系图中,节点是可以归类的,同一类的节点可以共用一个标签(label),反之一个节点可以有多个标签。例如,将某人记录为一个节点,那么用年龄划分、用职业划分等方式可以给他分配不同的标签,因而一个人的标签就可以是(person:24years:student),表明他24岁,是学生。

    关系(relationship)
            在Cypher中用-[:relationship-name]->来表示关系,一个表示指向性关系的箭头中间加上关系名称组成。这个箭头就非常的灵性,一个关系必须建立在两个确定的节点之间,并且关系本身是有向的、确定的,比如使用语句create (dongma:girl)-[:likes]->(chunxi:boy)<-[:likes]-(xuecai:girl),我们不难看出这条语句的意思是创建三个节点两个关系,内容是冬马和雪菜都喜欢春希,我们就能得到如下的关系图:
    Imgur

    属性
            上面这张图是用Neo4jDesktop的浏览器的可视化工具获得的,但是我们可以看到节点上只显示了数字,而我们之前明明写了三个人名,人名却没有显示。其实原因是之前在定义人名的时候的dongmachunxixuecai只是类似形参一样的存在,是为了在一条语句中区分不同的节点的,并不会在我们创建的数据库中保存,但是如果我们要保存姓名之类的信息,就需要给节点或者关系加上各种属性了。
            属性用{property1-name:"属性值1",property2-name:"属性值2"}的格式来表示,可以在创建节点的时候添加也可以在创建节点之后添加,Neo4j的可视化工具只会显示属性值,所以用create (dongma:girl {name:"东马"})-[:likes]->(chunxi:boy {name:"春希"})<-[:likes]-(xuecai:girl {name:"雪菜"}),这时候我们就能看到节点上显示出来名字这个属性了。
    Imgur

    Cypher语言查询数据库

    匹配(match)和返回(return)
            match语句的作用是遍历整个数据库查找符合要求的节点或者关系,而return是向用户返回需要的信息,例如使用match (n:girl {name:"三叶"}) return n就是在标签为girl的节点中寻找一个name为"三叶"的节点并且返回。或者我们可以使用return n.age来返回她的年龄(如果数据库中有的话)。

    Cypher语言修改数据库

    删除(delete)
            delete语句的作用是删除图中已经存在的节点或者关系,需要先用match语句来匹配符合要求的节点或是关系。例如删除一个节点match (n:Student {name:"李华"}) delete n,会先遍历数据库,在含有Student标签的节点中寻找所有名字叫"李华"的节点然后从数据库中将其删除。而删除关系就需要先查询到关系r,MATCH (cc: CreditCard)-[r]-(e:Customer) DELETE r。这个过程中数据库会匹配所有满足这种关系的子图,并且删除对应关系r。

    总结

            关于Cypher语言的关键字其实还有很多,但是以上四种是最基本的四种,并且篇幅有限这里也只举出了最基本的用法,只需要这四种语句就可以画出一个简单的关系图谱。Imgur
    由于最初的学习目的只是找一个优化关系图的工具,所以学到这里我也没有继续深究了,但是在学习过程中我也发现图数据库的应用其实还挺普及的,凡是涉及数据内部关系的场合都可以用到图数据库的相关技术。



  • ☂ 顶!



  • @unrealluver 你图挂了



  • @ryougi 好, 我知道了


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.