• Cypher查询语言--Neo4j-WHERE(三)


    目录

    1. Where
      1. Boolean 操作类型
      2. 节点属性上的过滤
      3. 正则表达式
      4. 转义正则表达式
      5. 不分大小些正则表达式
      6. 关系类型上的过滤
      7. 属性存在性
      8. 如果缺失属性默认为true
      9. 如果缺失属性默认为false
      10. 空置null过滤
      11. 关系过滤

    Where

    如果需要从查找的数据的图中过滤,可以在查询语句中添加where子句。

    图:

     

    Boolean 操作类型

    可以使用boolean操作符and 和 or 或者也可以使用not()函数。

    查询:

    START n=node(3, 1)

    WHERE (n.age < 30 and n.name = "Tobias") ornot(n.name = "Tobias")

    RETURN n

    返回节点。

    结果:

     

    节点属性上的过滤

    查询:

    START n=node(3, 1)

    WHERE n.age < 30

    RETURN n

    结果:

     

    正则表达式

    可以通过使用=~ /regexp/来匹配正在表达式。如下:

    查询:

    START n=node(3, 1)

    WHERE n.name =~ /Tob.*/

    RETURN n

    返回名叫Tobias的节点。

    结果:

     

    转义正则表达式

    如果在正则表达式中需要有斜杠时可以通过转义实现。

    查询:

    START n=node(3, 1)

    WHERE n.name =~ /Some/thing/

    RETURN n

    没有匹配的节点返回。

    结果:

    不分大小些正则表达式

    在正则表达式前加上?i,整个正则表达式将会忽略大小写。

    查询:

    START n=node(3, 1)

    WHERE n.name =~ /(?i)ANDR.*/

    RETURN n

    属性name为Andres的节点将返回

    结果:

     

    关系类型上的过滤

    可以match模式中通过添加具体的关系类型,但有时需要针对类型的更加高级的过滤。可以使用明确的type属性来对比,查询对关系类型名作一个正则比较。

    查询:

    START n=node(3)

    MATCH (n)-[r]->()

    WHERE type(r) =~ /K.*/

    RETURN r

    关系整个以K开始的类型名都将返回。

    结果:

     

    属性存在性

    查询:

    START n=node(3, 1)

    WHERE n.belt

    RETURN n

    结果:

    如果缺失属性默认为true

    仅当属性存在时,比较一个图的元素的此属性,使用允许空属性的语法。

    查询:

    START n=node(3, 1)

    WHERE n.belt? = 'white'

    RETURN n

    所有节点即使没有belt属性的 都将返回。此类比较返回为true。

    结果:

     

    如果缺失属性默认为false

    需要在缺失属性时为false,即不想返回此属性不存在的节点时。使用感叹号。

    查询:

    START n=node(3, 1)

    WHERE n.belt! = 'white'

    RETURN n

    结果:

     

    空置null过滤

    有时候需要测试值或者标识符是否为null。与sql类似使用 is null 或 not(is null x)也能起作用。

    查询:

    START a=node(1), b=node(3, 2)

    MATCH a<-[r?]-b

    WHERE r is null

    RETURN b

    Tobias节点没有链接上。

    结果:

     

    关系过滤

    为过滤两点间基于关系的子图,在match子句中使用限制部分。可以描述带方向的关系和可能的类型。这些都是有效的表达:WHERE a-→b WHERE a←-b WHERE a←[:KNOWS]-bWHERE a-[:KNOWS]-b

    查询:

    START a=node(1), b=node(3, 2)

    WHERE a<--b

    RETURN b

    Tobias节点没有链接

    结果:

  • 相关阅读:
    结构体 和 类 的区别
    运算符重载
    迭代器
    HttpClient 同时上传多个文件及参数, 同时利用 Web Api 接收
    JS 上传图片时实现预览
    web api 如何通过接收文件流的方式,接收客户端及前端上传的文件
    同时上传参数及图片到 Web Api
    jsp jstl标签库核心标签
    jsp jstl的使用
    jsp 简单标签开发
  • 原文地址:https://www.cnblogs.com/divenswu/p/3441755.html
Copyright © 2020-2023  润新知