Neo4J Cypher数据类型转换

时间:2014-01-15 08:54:26

标签: neo4j cypher

我的quantity节点上有一个属性Product,我正在寻找一个cypher查询,它给我所有节点quantity = 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数据,其中整数值存储为字符串,我们希望对这些数据进行一些匹配字符串

3 个答案:

答案 0 :(得分:10)

你可以反过来做。

MATCH (p:Product) WHERE p.quantity = str(20) RETURN p;

也应该与params一起使用。

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

或甚至与内联属性匹配

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

答案 1 :(得分:7)

MATCH (p:Product) WHERE toInt(p.quantity) = 20;

答案 2 :(得分:0)

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