zoukankan      html  css  js  c++  java
  • Cypher-(7)-查询数据(Match)

    Cypher使用match子句查询数据,是Cypher最基本的查询子句。在查询数据时,使用Match子句指定搜索的模式,这是从Neo4j数据库查询数据的最主要的方法。match子句之后通常会跟着where子句,向模式中添加过滤性的谓词,用于对数据进行过滤。在查询数据时,查询语句分为多个部分,with子句用于对上一个查询部分的结果进行处理,以输出到下一个查询部分。

    一,节点查询

    对节点进行查询,是查询graph的基本操作,节点具有标签和属性,Match查询不仅能够按照标签对节点进行查询,还能按照属性对节点进行查询。 当没有指定节点的标签或属性时,默认是选择节点全部的标签和属性。

    1,查询所有节点

    仅仅指定一个节点的模式,没有标签(Lable)和属性,表示查询所有的节点:

    MATCH (n)
    RETURN n
    

    2,查询带有特定标签的节点

    当模式中指定标签时,表示只查询带有特定标签的节点,有多个标签的节点,只要含有指定的标签,就成功匹配,绑定该节点。

    MATCH (movie:Movie)
    RETURN movie.title
    

    3,查询相关的任意节点

    指定一个节点,节点的name属性是'Oliver Stone',查询跟该节点相关的其他节点:

    MATCH (director { name: 'Oliver Stone' })--(movie)
    RETURN movie.title
    

    4,查询相关的特定节点

    指定一个节点,查询跟节点相关的节点,并指定相关节点的标签

    MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
    RETURN movie.title
    

    二,基本关系的查询

    对关系进行查询,关系的模式是由两个节点来决定的。

    1,指定关系的方向来查询节点

    对于标签是Person,并且name属性是'Oliver Stone'的节点,该节点指向另外一个节点movie:

    MATCH (:Person { name: 'Oliver Stone' })-->(movie)
    RETURN movie.title
    

    2,查询关系的类型

    在查询关系时,可以在match子句中指定关系变量,后续子句可以引用该变量,例如,使用type()函数查看关系的类型:

    MATCH (:Person { name: 'Oliver Stone' })-[r]->(movie)
    RETURN type(r)
    

    3,匹配关系类型

    在匹配关系时,可以指定关系的类型

    MATCH (wallstreet:Movie { title: 'Wall Street' })<-[:ACTED_IN]-(actor)
    RETURN actor.name
    

    3,匹配多种关系类型

    在匹配关系时,可以指定多种关系的类型,只需要匹配其中任意一个关系类型就匹配成功

    MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
    RETURN person.name
    

    4,匹配关系类型,并指定关系变量

    MATCH (wallstreet { title: 'Wall Street' })<-[r:ACTED_IN]-(actor)RETURN r.role
    

    5,匹配多个关系

    MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)RETURN movie.title, director.name
    

    三,匹配路径

    路径是节点和关系交替组合构成的序列,图中必须满足路径指定的模式,才能返回路径中的元素。

    1,对变长路径的查询

    MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)RETURN movie.title
    

    2,路径变量

    MATCH p =(actor { name: 'Charlie Sheen' })-[:ACTED_IN*2]-(co_actor)RETURN relationships(p),p
    

    3,根据路径的属性进行匹配

    MATCH p =(charlie:Person)-[* { blocked:false }]-(martin:Person)WHERE charlie.name = 'Charlie Sheen' AND martin.name = 'Martin Sheen'RETURN p
    

    参考文档:

    Cypher Match

    转载于:https://www.cnblogs.com/ljhdo/p/10929702.html

  • 相关阅读:
    Delphi系统变量:IsMultiThread对MM的影响
    Delphi7中 string, AnsiString, Utf8String,WideString的区别分析
    Delphi之TComponent类
    delphi -----(去掉窗口最大化,最小化、关闭),主窗口,和子窗口之间的设置
    Application.Title与Application.MainFormOnTaskbar之间的关系
    DELPHI用户登录窗口框架
    Element 1.2.7 发布,饿了么 Vue 2.0 组件库
    用Delphi实现网络视频编程
    甘超波:NLP是什么?
    OpenCV使用filter2D实现图像对比度提升
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14840795.html
Copyright © 2011-2022 走看看