此处属性r.weight中的值是一个字符串。我试过以下可能性将其转换为整数,
INT(r.weight)
Integer.parseInt(r.weight)
convert(INT,r.weight)
但没有任何作用。这样做是否有适当的功能?
reduce(total = 0, r in relationships(p): total + INT(r.weight))
注意:它不是Gremlin type conversion
的可能副本版本:1.9.5
答案 0 :(得分:3)
正如上面的评论中所述,在1.9.x中使用Cypher没有简单的方法。作为一种解决方法,您可以使用neo4j-shell
并使用gsh
或jsh
或eval
命令执行迭代所有关系的脚本并转换{{1从String到numeric的属性。
答案 1 :(得分:2)
扩展chamber5的答案。
大概您有兴趣对权重进行一些算术运算。一个明显的用例是对进入节点的权重求和。例如,在社交网络中,也许我们对Ada从其他节点(同事)收到的消息数量感兴趣;一条消息会使该优势或关系的权重增加一。
因此,我们要匹配名称为“ Ada”的Person节点中给定类型(r)的所有关系。
MATCH ()-[r]->(n:Person {name:"Ada"})
RETURN sum(toInteger(r.weight)) AS total_weights_in;
当然,我们也可以通过调整ASCii艺术来寻找双向总权重:
MATCH ()<-[r]->(n:Person {name:"Ada"})
RETURN sum(toInteger(r.weight)) AS total_weights_in;
此功能适用于Neo4j 3.4.9版。
答案 2 :(得分:1)
在Cypher 3.3.5中toInt()
已被弃用,而是使用toInteger()
即。 toInteger(r.weight)
- 这很好用