如何在Neo4j查询结果中添加交易的from/to节点contact_id
解决Cypher查询返回关系时获取from/to节点contact_id的问题
你可以利用Cypher的STARTNODE()和ENDNODE()函数直接从关系对象中获取两端节点,再提取contact_id属性,修改后的查询如下:
MATCH path = (:Contact {contact_id: '111'})-[t:TRANSACTION*1..3]-() UNWIND relationships(path) as rel WITH DISTINCT rel RETURN rel, STARTNODE(rel).contact_id as from_contact_id, ENDNODE(rel).contact_id as to_contact_id
说明:
STARTNODE(rel)返回该交易关系的起始节点,ENDNODE(rel)返回结束节点- 通过
.contact_id直接提取节点的contact_id属性,和原关系对象一起返回 - 保留了原查询的
DISTINCT去重逻辑,确保每条交易关系只返回一次
如果不需要完整的关系对象,只想展示核心交易信息,也可以指定返回关系的具体属性(比如金额),示例:
MATCH path = (:Contact {contact_id: '111'})-[t:TRANSACTION*1..3]-() UNWIND relationships(path) as rel WITH DISTINCT rel RETURN STARTNODE(rel).contact_id as from_id, ENDNODE(rel).contact_id as to_id, rel.amount as transaction_amount
内容的提问来源于stack exchange,提问作者Diego Fernandez
相关产品推荐
相关产品推荐

