在前面的案例里面我们展示了非常多的match相关的语法,使用match主要是用来做查询的。所以这里不做过多说明,直接演示下具体的使用即可。
1、查询所有节点
neo4j中查询所有节点的语法是最简单的,示例如下:
match (n) return n
使用上面的语法进行查询的时候,他会展示出来所有的节点及节点之间的关系。
2、查询某类节点的属性
像我们之前在创建张三和李四的时候都使用了Person对象,那么我们可以直接查询所有Person对象的属性,例如:
match (a:Person) return a.name,a.age
3、查询某个节点相关的节点
假设一种场景,比如:张三这个节点连接了李四,同时也连接了王五,赵六节点只连接了王五,那么我们需要查询张三和张三的所有关联节点,这样子是不是就不会显示赵六。这样的场景我们如何操作呢?下面来演示下:
#在上面的基础上创建节点和关系 create (a:Person{name:'王五',age:20}) create (b:Person{name:'赵六',age:30}) match (m:Person{name:'张三'}),(n:Person{name:'王五'}) create (m)-[r:兄弟]->(n) match (c:Person{name:'赵六'}),(d:Person{name:'王五'}) create (c)-[r1:兄弟]->(d) #创建完成之后,我们看看整个节点和图的关系 match (n) return n
此时我们的需求是只需要查询张三和与张三建立关系的节点,示例查询如下:
match p = (:Person{name:'张三'})--(:Person) return p
查询的结果是不是只包含张三和张三连接的节点,没有赵六的信息了。这个场景在日常使用的非常广泛。
4、查找关系
查找关系的话一般有指出关系和指入关系及所有关系,指出就是我指向别人,指入就是别人指向我。分别使用-->和<--及--来进行表示。下面演示下:
1)查找张三指出的关系
match p = (:Person{name:'张三'})--> (n) return p
2)查找王五指入的关系
match p = (:Person{name:'王五'}) <-- (n) return p
3)查找张三的所有指入和指出关系
match p = (:Person{name:'张三'}) -- (n) return p
4)查找某些关系连接的节点,例如查询所有兄弟关系的
match p = (a)-[r:兄弟]-> (b) return p
如果查找姐妹关系就查找不出来,因为我们没有这样的数据,示例如下:
match p = (a)-[r:姐妹]-> (b) return p
上面我们制定兄弟,代表只匹配一种关系,如果要匹配多种关系的话,可以使用|(竖线进行拼接)。这种其实就是一个或查询的形式。下面我们来演示一下:
match p = (a)-[:姐妹|:兄弟]-> (b) return p
以上就是match相关的查询演示案例。
备注:
1、有时候我们查询的时候,如果值里面带有空格,那么我们需要使用单引号将他包括起来,例如‘tomas wang’。在实际中我们最好也保持用单引号来圈值的习惯。
还没有评论,来说两句吧...