Neo4j Cypher - String to Integer

时间:2014-03-06 09:51:52

标签: neo4j cypher

此处属性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

3 个答案:

答案 0 :(得分:3)

正如上面的评论中所述,在1.9.x中使用Cypher没有简单的方法。作为一种解决方法,您可以使用neo4j-shell并使用gshjsheval命令执行迭代所有关系的脚本并转换{{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) - 这很好用