语法-值和类型

Neo
Neo
2022-03-12 / 0 评论 / 52 阅读

本节内容源自Cypher官方手册V4.4版,笔者对其进行学习、翻译、记录。

Cypher 为许多数据类型提供一流的支持。

这些分为几类,将在以下小节中详细描述:

属性类型:Integer、Float、String、Boolean、Point、Date、Time、LocalTime、DateTime、LocalDateTime 和 Duration。

结构类型:Node、Relationship、Path。

复合类型:List、Map

属性类型

  •  可以从 Cypher 查询中返回
  •  可用作参数
  •  可以存储为属性
  •  可以用Cypher字面量构造

属性类型:

  • Number,一种抽象类型,具有子类型Integer和Float
  • String
  • Boolean
  • 空间类型:Point
  • 时间类型:Date,Time,LocalTime,DateTime,LocalDateTime和Duration

形容词 numeric 在描述 Cypher 函数或表达式的上下文中使用时,表示适用任何类型的 Number(Integer或Float)。

简单类型的同构列表也可以存储为属性,尽管列表通常(请参阅复合类型)不能存储。

Cypher 还为字节数组提供传递支持,可以将其存储为属性值。Cypher不将字节数组视为第一类数据类型,因此没有字面量表示。

特殊字符的排序
包含不属于 BMP 的字符的字符串在 Neo4j 中可能具有不一致或不确定的顺序。BMP 是 Unicode 中定义的所有字符的子集。简单地说,它包含来自所有常用语言的所有常用字符。

结构类型

  •  可以从 Cypher 查询中返回
  •  不能用作参数
  •  不能存储为属性
  •  不能用Cypher字面量构造

结构类型:

  • 节点(Node)

    • id

    • Label(s)

      标签不是值,而是模式语法的一种形式。

    • Map

  • 关系(Relationship)

    • id
    • Type
    • Map
    • id(开始节点)
    • id(结束节点)
  • 路径,节点和关系的交替序列

    节点、关系和路径作为模式匹配的结果返回。在 Neo4j 中,所有关系都有一个方向。但是,您可以在查询时拥有无向关系的概念。

复合类型

  •  可以从 Cypher 查询中返回
  •  可用作参数
  •  不能存储为属性
  •  可以用 Cypher 字面量构造

复合类型:

  • List,一个异构的、有序的值集合,每个值都有任何属性、结构或复合类型。

  • Map ,(键,值)对的异构,无序集合。

    • 键是一个字符串
    • 值具有任何属性、结构或复合类型

复合值也可以包含null.

使用时必须特别小心null(参见使用null)。