我的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数据,其中整数值存储为字符串,我们希望对这些数据进行一些匹配字符串
答案 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版本可能已经改变了。