Memgraph v2.0:wShortest聚合函数无法支持duration等时间类型的问题
解决Memgraph v2.0中wShortest函数无法使用duration类型作为权重的问题
Memgraph v2.0的wShortest最短路径聚合函数仅支持数值类型作为权重参数,直接传入duration类型会触发类型不匹配错误,也就是你遇到的:
Error: Query failed: Calculated weight must be numeric, got duration.
解决方案:将duration转换为数值类型
你需要把边的duration属性转换成数值(比如总秒数、小时数等),再传入权重计算逻辑。Memgraph的duration类型支持以下常用转换方法:
duration.total_seconds():获取持续时间的总秒数(数值类型)duration.hours:获取持续时间的小时数(数值类型)duration.minutes:获取持续时间的分钟数(数值类型)
修改后的查询语句
以转换为总秒数为例,调整后的查询如下:
MATCH (a {name: "storage"})-[edge_list *wShortest 10 (e, n | e.duration.total_seconds()) fetch_time]->(b) RETURN *;
如果更关注小时数,也可以改成:
MATCH (a {name: "storage"})-[edge_list *wShortest 10 (e, n | e.duration.hours) fetch_time]->(b) RETURN *;
额外提示
你的图创建代码中有一处笔误:最后一条边指向的archive节点未被创建,建议修正为已定义的节点(比如archive4),避免查询时出现缺失节点的问题:
(lto)-[:Ride {duration: duration("4H")}]->(archive4)
内容的提问来源于stack exchange,提问作者KWriter
相关产品推荐
相关产品推荐

