neo4j 获取数组中的节点属性值

5w9g7ksd  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(210)

我可以在数组中返回节点属性值吗?假设我在neo4j中创建了以下节点:

CREATE (p:Person {name:'Ernesto', gender:'male', town:'Cham'})

字符串
我可以使用以下命令生成密钥:

MATCH (p:Person {name: 'Ernesto'} )
RETURN keys(p)


将产生:

[name, gender, town]


什么是正确的方法来获得:

['Ernesto', 'male', 'Cham']


作为一个集合,更好的是,获得一个Map:

{name: 'Ernesto', gender: 'male', town: 'Cham'}


对以节点属性的形式直观地获取此信息不感兴趣,因为它始终包含节点ID。我感兴趣的是一个通用的方法,所以它可以被可变地使用。
谢谢你的帮助

bzzcjhmw

bzzcjhmw1#

不幸的是,不可能使用Cypher返回节点的所有属性。会是一个伟大的功能虽然。
你得到的东西接近它:

MATCH (n) RETURN str(n) LIMIT 1

字符串
这将返回一个字符串表示形式,您可以在应用程序中解析它:

Node[817903]{key:"value", key2:"value2"}

sqserrrh

sqserrrh2#

要以数组形式获取属性值,请执行以下操作:

MATCH (p:Person {name: 'Ernesto'})
RETURN [prop IN properties(p) | prop] AS propertyValues

字符串
这个查询使用列表解析来迭代节点p的属性,并创建一个包含所有属性值的数组。结果将是['Ernesto','male','Cham']。
要以Map的形式获取特性值,请执行以下操作:

MATCH (p:Person {name: 'Ernesto'})
RETURN apoc.map.fromPairs([prop IN properties(p) | [prop, p[prop]]]) AS propertyMap


在这个查询中,使用APOC库的map.fromPairs函数将属性转换为键值对,然后将其转换为Map。结果将是{name:“Ernesto”,性别:“男性”,城镇:'Cham'}。

相关问题