Cypher查询条件返回问题:无Group关联的Asset节点数据获取需求
解决方案
原查询用MATCH强制要求Asset节点必须和Group节点存在关联,导致没有关联Group的Asset被过滤。要保留这类Asset及其关联的metadata,只需把Group与Asset之间的匹配改为OPTIONAL MATCH——它会匹配存在的关系,若不存在则对应group_data返回null,但不会过滤符合其他条件的节点。
修改后的Cypher查询语句:
OPTIONAL MATCH (group_data:Group)-[]->(asset_data:Asset) MATCH (asset_data:Asset)<-[metadata:MD]-(:RawData) RETURN group_data, asset_data, metadata
也可以合并为一个带可选关系的语句,效果完全一致:
OPTIONAL MATCH (group_data:Group)-[]->(asset_data:Asset)<-[metadata:MD]-(:RawData) RETURN group_data, asset_data, metadata
修改后所有关联了RawData的Asset都会被返回:
- 若
Asset关联了Group,group_data会返回对应节点数据 - 若
Asset没关联Group,group_data显示为null,但asset_data和metadata仍正常返回
内容的提问来源于stack exchange,提问作者Yuval Kobel
相关产品推荐
相关产品推荐

