Neo4j Cypher中整数列表转换失效问题排查
问题分析与解决
问题原因
apoc.convert.toIntList() 的设计目的是处理字符串类型的数字列表(比如将 ["1", "2", "3"] 转换为整数列表),而非转换Neo4j中已存在的long类型数值。当传入long类型的列表时,该函数不会执行类型转换,直接返回原列表,这就是你看不到转换效果的原因。而 apoc.convert.toStringList() 能生效,是因为它确实会把数值类型转为字符串类型,符合其设计逻辑。
正确解决方案
要将long类型列表转为int类型列表,需要遍历列表逐个转换元素类型,使用Neo4j内置的 toInteger() 函数结合列表推导式即可实现:
修改后的查询语句:
MERGE (bs:Bslot {date: $date}) ON CREATE SET bs.slots = [1,2,2,0] RETURN {slots: [x IN bs.slots | toInteger(x)]}
内容的提问来源于stack exchange,提问作者MichaelE
相关产品推荐
相关产品推荐

