如何在apoc.convert.toTree的JSON结果中显示关系ID?
在Neo4j中通过apoc.convert.toTree获取关系ID的解决方法
你当前使用apoc.convert.toTree时能正常获取节点ID,但无法获取关系ID,期望输出包含关系ID的结构,之前尝试的CALL apoc.convert.toTree(paths, true, {rels: {acted_in: ['_id']}})无法生效,原因是关系的ID并非关系的原生属性,需要通过id(rel)函数提取后再传入转换过程。
可行解决方案
先在Cypher语句中将关系ID作为临时属性添加到对应关系上,再调用apoc.convert.toTree并指定包含该临时属性:
// 匹配目标路径 MATCH path=(m:Movie)-[r:acted_in]->() // 给关系添加临时的_id属性,值为关系的ID WITH apoc.path.extend(path, [], [], {relProps: {_id: id(r)}}) AS updatedPath // 调用转换函数,指定要包含的关系属性(_id和roles) CALL apoc.convert.toTree([updatedPath], true, {rels: {acted_in: ['_id', 'roles']}}) YIELD value RETURN value
输出示例
执行后将得到你期望的格式:
{"_type":"Movie","_id":33,"title":"Something's Gotta Give","acted_in.roles":["Julian Mercer"],"acted_in._id":65}
补充说明
apoc.path.extend用于在原路径基础上给关系添加临时属性,不会修改数据库中的实际关系数据- 配置参数
{rels: {acted_in: ['_id', 'roles']}}指定转换时要包含acted_in关系的_id和roles属性
内容的提问来源于stack exchange,提问作者DidGohf
相关产品推荐
相关产品推荐

