You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求调试Neo4j Cypher路径属性过滤查询

调试后的Cypher查询及问题说明

问题根源

原查询在使用reduce构建过滤属性映射时,误用了静态键名语法。{ key: rel[key] }会将字符串"key"作为键名,而非变量key的实际值,导致无法正确生成动态属性映射,进而引发查询运行失败。

修正后的查询

MATCH path = (n:UrlNode {label: 'H'})-[r:PATH*]->(m:UrlNode)
WHERE ALL(rel IN relationships(path) WHERE ANY(key IN keys(rel) WHERE key CONTAINS 'H'))
  AND NOT EXISTS { (m)-[:PATH]->(:UrlNode) }
WITH path, nodes(path) AS nodes, relationships(path) AS rels
UNWIND rels AS rel
WITH path, nodes, rel, [key IN keys(rel) WHERE key CONTAINS 'H'] AS filteredKeys
WITH path, nodes, rel, reduce(acc = {}, key IN filteredKeys | acc + { (key): rel[key] }) AS filteredProperties
RETURN nodes, COLLECT({relationship: rel, properties: filteredProperties}) AS relations;

关键修改点

  • 将{ key: rel[key] }调整为{ (key): rel[key] }:通过括号包裹变量key,让Cypher将其值解析为动态键名,而非静态字符串,从而正确生成包含目标属性的映射。
  • 其余路径匹配、过滤条件及分组逻辑保持与原可运行查询一致,确保业务逻辑不受影响。

内容的提问来源于stack exchange,提问作者Sharon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:32:11