初探Neo4J中的Cypher

       由于RDF数据库需要,需要调研图形数据库,选择了Neo4J进行尝试,发现它包含了一个名为“Cypher”的操作语言,使用了一下感觉非常不错,所有有写点东西的必要。
       从官网上盗个图:

     其实,这个图也就标识了cypher语言的基本功能,节点a到节点b,关系是LIKES,其操作的方法与sql的select一样选择符合某种条件的实体,由此强烈建议大家使用网页版进行熟悉操作,比较直观,可以直接得到图形。
      闲话少说,我们姑且成上面的为万能公式,该万能公式大体上分为两个部分()与[],其中()表示某个节点可以当作是关系数据库中的某条记录或者RDF中的实体,[]表是某种关系,从而创建了实体与实体之间的关系;
     之后根据万能公式完成匹配和其他的操作,关键词Match Return。
     Match(a) Return a,含义表示返回所有的节点,其中a就是定义变量的方式;
     Match(a:Person) Return a,返回所有Person类别的节点,其中Person类型在节点创建的过程中进行指定;
      Match(a:Person:Teacher) Return a,返回所有Teacher同时属于Person类别的节点(例子有点不恰当),从这个例子我们可以看出例子我们可以看出只要你想的到多少类别都可以;
     除此之外,我们可以通过create创建节点;
     create (:Person {name:"李晨"}),创建一个名为李晨的节点;
     create (fan:Person {name:"范冰冰"}) return fan,创建一个名为范冰冰的节点,并返回,从这个里面我们可以看到类型前面可以变量,需要说明的是即使你不加类型依然可以进行声明;
     Match(li:Person {name:"李晨"}) Match(fan:Person {name:"范冰冰"})  create (fan) -[:搞定]->(li) return fan,li,完成了关系,范冰冰 搞定 李晨;
    最后,还需要说明的一个是shortestPath,顾名思义查找最短路径,熟悉RDF的大概都能了解Relfinder功能,两者功能类似,白话来讲就是,找到一个小A和小B,他们之间有没有关系呢,就是通过shortestPath方法来实现,起就是都过关系来规定几度关系来进行推断;
    Match(a:Person {name:"小A"}) Match(b:Person {name:"小B"})  p= shortpath((a) -[:朋友*..2]->(b)) return a,b,p,返回所有小A和小B之间能产生二度以内好友关系的可能路径。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值