Neo4J Cypher数据类型转换

Neo4J Cypher数据类型转换,neo4j,cypher,Neo4j,Cypher,我在我们的产品-节点上有一个属性数量,我想做一个密码查询,给我所有数量=20的节点。。。问题是数量在neo4j中存储为字符串。在cypher查询中是否有将属性强制转换为整数的方法 // This fails to find the required nodes MATCH (p:Product) WHERE p.quantity = 20; // This finds them MATCH (p:Product) WHERE p.quantity = "20"; // I would lik

我在我们的
产品
-节点上有一个属性
数量
,我想做一个密码查询,给我所有
数量=20
的节点。。。问题是数量在neo4j中存储为字符串。在cypher查询中是否有将属性强制转换为整数的方法

// This fails to find the required nodes
MATCH (p:Product) WHERE p.quantity = 20;

// This finds them
MATCH (p:Product) WHERE p.quantity = "20";

// I would like to do this
MATCH (p:Product) WHERE INT(p.quantity) = 20;

PS:这是一个非常简化的用例,我们没有真正的产品和数量,只是面对现有的neo4j数据,这些数据的整数值存储为字符串,我们想对这些字符串进行一些匹配

我之前也遇到过这个问题。据我所知,直接在cypher中进行转换是不可能的。我使用了一个小Java脚本(使用标准JavaAPI)来更改存储值的数据类型。不过这是几个月前的事了,所以2.0版本可能已经改变了。

你可以反过来做

MATCH (p:Product) WHERE p.quantity = str(20) RETURN p;
还应与参数一起使用

MATCH (p:Product) WHERE p.quantity = str({quantity}) RETURN p;
甚至使用内联属性匹配

MATCH (p:Product {quantity : str({quantity})}) RETURN p;

是的,我看过谷歌小组的讨论,但我希望neo4j 2.0能有所改变。。。我在文档中没有找到任何东西。仍然无法转换为整数?啊,这里是:看起来
str
可能已重命名为
toString
,请参阅。在答案中添加一些文本来解释您正在做的事情总是一个好主意。阅读。
toInt
是我所需的功能,正如信息:toInt已被弃用,请使用toInteger()
MATCH (p:Product) WHERE toInt(p.quantity) = 20;