得到neo4j结果

时间:2016-10-27 21:38:27

标签: jdbc neo4j

我正在使用neo4j jdbc驱动程序访问本地服务并进行以下查询以找到我需要的内容:

"MATCH (u:User)-->(d:Deck)-[p:Played]->(g:Game)" +
"WHERE id(g) = ?" +
"RETURN {r {user :u, deck :d, played:p, game:g}}"

我把它作为地图投射,可以找到部件,就在我的脸上,我可以看到我需要的东西。我怎么得到它? ({comment = ...}等)

enter image description here

我知道如何通过

获得它
RETURN p.comment, p.place ... etc 

但我担心这很快就会失控。如果我能得到至少那个json字符串,我会很高兴。

2 个答案:

答案 0 :(得分:2)

内置的Cypher函数PROPERTIES(),概述为here,它将具有属性(节点,关系,甚至是预先存在的映射)的任何内容转换为属性的Map,而不是其他数据。语言驱动程序具有hydrate节点和关系的内置工具,因此属性访问很简单,但是如果您需要Map并且只返回Map,那么只需使用RETURN PROPERTIES(p)即可。得到它。

答案 1 :(得分:0)

在行之间进行读取,看起来您正在尝试获取特定节点和属性的所有属性,而没有任何无关的元数据。

安装APOC插件后,您可以使用apoc.map.fromPairs过程生成包含节点或关系的所有属性的地图。

例如,要获取每个User节点的所有属性:

MATCH (u:User)
CALL apoc.map.fromPairs([k IN KEYS(u) | [k, u[k]]]) YIELD value AS props
RETURN props;
  • [k IN KEYS(u) | [k, u[k]]]生成一组键/值集合。
  • apoc.map.fromPairs()过程接受一组键/值集合,并将其转换为地图。