1. 文章
  2. 文章详情

Neo4j-CQL - Cypher类型

Cypher支持的类型分为三类:属性类型,复合类型和结构类型。

属性类型

属性类型:Integer、Float、String和Boolean

Boolean类型:truefalseTRUEFALSE

String类型:'Hello'"World"

复合类型

复合类型:List和Map,List是有序的值的集合,Map是无序的Key/Value对的集合,通常用于存储节点和关系的属性。

List类型:['a', 'b'][1, 2, 3]['a', 2, n.property, $param][ ]

Map类型:n是节点,prop是节点的属性键,引用属性的值的格式:n.prop,

List类型

由标量类型构成的List,例如,['a', 'b'][1, 2, 3]

由函数range函数生成的List对象,例如,range(0,10),从start到end的有序数字,Range函数包含两端。

列表(List comprehension):[x IN range(0,10) WHERE x % 2 = 0 | x^3]

Map类型

列表的常量表示:{ key: 'Value', listKey: [{ inner: 'Map1' }, { inner: 'Map2' }]}

Map投影,用于从节点、关系和其他Map对象中投影特定元素或变量的值,Map投影的格式是:

map_variable {map_element, [, …​n]}

参数注释:

  • map_variable:用于引用Map对象
  • map_element 有四种格式是:
    • 属性选择器:格式是 .Key,用于引用Map对象中的属性
    • 嵌入属性(Literal entry),是一个Key/Value对,例如,key: expression,表示嵌入到Map变量中的元素
    • 变量选择器:把一个变量的名称作为Key,变量的值作为Key的值,构建一个Key/Value对,作为Map变量中的元素
    • 属性全选符号: .*

Map投影的示例,actor是Map变量,nrOfMovies是变量,从Map变量中获取name属性,并添加额外的属性nrOfMovies:

MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)
WITH actor, count(movie) AS nrOfMovies
RETURN actor { .name, nrOfMovies }

结构类型

结构类型:Node类型、关系类型、Path类型:

  • 其中Node类型表示一个节点,由Id、Label和Map构成;
  • 关系类型表示一个关系,由Id、Type、Map和 关系两端的两个节点的Id构成;
  • Path类型表示路径,是节点和关系的序列。Path模式:(a)-->()<--(b)

发表评论

登录后才能评论

评论列表(0条)