如何使用值返回节点的所有属性

我正在研究一个瓶子和neo4j的项目.我需要从节点检索所有属性作为dict.像这样的东西

{‘性别’:’男性’,’密码’:’$2a $12 $fd5KtsMjZHz26goBGcF3 / .gZhZUP / 6YAP7lRQ8Kf6eB5m69EhB5lS’,’email’:’xyz @ gmail.com’,’age’:’50’,’country’: ‘US’,’用户名’:’xyz’}

我在寻找答案时偶然发现了这个问题

How can I return all properties for a node using Cypher?
sugegsted可以将属性名称作为键返回.

在版本2.3.0中,也可以返回值
例如,我有节点具有这些属性

用户名xyz

发送电子邮件至xyz@gmail.com

50岁

性别男

密码$2a $12 $fd5KtsMjZHz26goBGcF3 / .gZhZUP / 6YAP7lRQ8Kf6eB5m69EhB5lS

如果我在下面的查询中返回n

>>>for record in graph.cypher.execute("MATCH (n:User) WHERE n.username='xyz' RETURN n"):

...         print(record[0])

结果会在前面连续返回(n11:User,所以我无法在没有进一步处理的情况下直接在jinja模板中使用此结果

(n11:用户{年龄:“50”,国家:“美国”,电子邮件:“xyz@gmail.com”,性别:“男性”,密码:“$2a $12 $fd5KtsMjZHz26goBGcF3 / .gZhZUP / 6YAP7lRQ8Kf6eB5m69EhB5lS”,用户名: “XYZ”})

如果我使用下面的查询

>>>for record in graph.cypher.execute("MATCH (n:User) WHERE n.username='xyz'
RETURN EXTRACT(key IN keys(n) | {value: n[key], key:key})"):

...         print(record[0])

我得到了这些结果.

[{‘value’:’xyz @ gmail.com’,’key’:’email’},{‘value’:’50’,’key’:’age’},{‘value’:’US’, ‘key’:’country’},{‘value’:’xyz’,’key’:’username’},{‘value’:’$2a $12 $fd5KtsMjZHz26goBGcF3 / .gZhZUP / 6YAP7lRQ8Kf6eB5m69EhB5lS’,’key’:’密码’},{‘价值’:’男’,’钥匙’:’性别’}]

此查询的问题在于,它并不真正返回键值元组,而是在键和值前面附加键和值标签.
没有进一步处理就不可能使用输出.
或者是否有另一种方法来运行查询以获得结果为dict?

此外,从Neo4j的想法框

https://trello.com/c/FciCdgWl/7-cypher-property-container-functions

似乎可以进行这些查询

可能的功能:

MATCH n RETURN键(n)
返回属性键的集合.

MATCH n RETURN值(n)
返回属性值的集合.

MATCH n RETURN条目(n)
返回键/值对的集合.

但我只能运行 – MATCH n RETURN键(n)

为了休息,我得到无效的语法错误.其余的功能没有实现?

最佳答案 如果只执行RETURN n,则节点属性将作为映射返回.

见:http://neo4j.com/docs/stable/rest-api-transactional.html#rest-api-execute-multiple-statements

这个控制您以编程方式筛选要返回的属性:

MATCH (n) WHERE id(n)=#
RETURN EXTRACT(key IN keys(n) | {key: key, value: n[key]}) 

否则,如果您知道要返回哪些,请拼写出来:RETURN n.name,n.age.

点赞