当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用值返回节点的所有属性》经验,为你挑选了1个好方法。

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

{ '性别': '男', '密码': '$ 2A $ 12 $ fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS', '邮件': 'xyz@gmail.com', '年龄': '50', '国家': 'US','用户名':'xyz'}

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

如何使用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', '键': '国家'},{ '值': 'XYZ', '关键': '用户名'},{ '值': '$ 2A $ 12 $ fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS', '密钥':'密码'},{'价值':'男','钥匙':'性别'}]

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

此外,从Neo4j的想法框

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

似乎可以进行这些查询

可能的功能:

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

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

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

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

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



1> Michael Hung..:

如果您这样做,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.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有