Cypher中单独使用的大括号代表什么含义?
Cypher中大括号的单独使用场景解析
1. RETURN/WITH子句中构造映射(Map)
你示例里的这类{key: value, key2: value2}写法,是用来创建自定义的映射(Map)对象,把多个属性、计算值打包成一个键值对集合,作为单个字段返回或传递给后续子句。
比如第一个示例里的:
{name: p.name, label: head(labels(p))} AS person
这行语句会把p节点的name属性,以及它的第一个标签(通过head(labels(p))获取)组合成一个Map,返回时这个person字段会是类似{"name": "Alice", "label": "Person"}的结构化数据,方便后续处理或精简返回结果。
第二个示例里的:
{ name : r1.name, labelId: r1.labelId, type: type(r1) } as r1 { name : r2.name, labelId: r2.labelId, type: type(r2) } as r2
同样是构造Map,不过是把关系r1/r2的指定属性和关系类型(type(r1)获取关系类型名)封装起来,替代原本返回的完整关系对象,只保留业务需要的字段,减少返回的数据量。
2. 关系匹配中的:{}写法
而MATCH (e:Entity)-[r1:{}]-(t1:Entity)里的[:{}],是用来匹配任意类型的关系。
在Cypher中,关系的标准写法是[:关系类型](比如[:FRIENDS_WITH]),如果写成[:{}],表示不限制关系的类型——只要节点e和t1之间存在关系,不管是什么类型,都会被匹配到。这和省略关系类型的写法-[r1]-是等价的,只是写法不同而已。
内容的提问来源于stack exchange,提问作者Frisia
相关产品推荐
相关产品推荐

