我正在使用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 = ...}等)
我知道如何通过
获得它RETURN p.comment, p.place ... etc
但我担心这很快就会失控。如果我能得到至少那个json字符串,我会很高兴。
答案 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()
过程接受一组键/值集合,并将其转换为地图。