Neo4J Cypher数据类型转换

f87krz0w  于 2023-05-17  发布在  其他
关注(0)|答案(4)|浏览(165)

我有一个属性quantity对我们的Product-节点,并期待做一个密码查询,给我所有的节点与quantity = 20...问题是quantity在neo4j中存储为字符串。有没有办法在密码查询中将属性转换为整数?

// 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数据,这些数据具有存储为字符串的整数值,我们想对这些字符串进行一些匹配 *
e0bqpujr

e0bqpujr1#

你可以反过来做。

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;
33qvvth1

33qvvth12#

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

xdnvmnnf3#

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

gopyfrb3

gopyfrb34#

toInteger为我工作。

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

我是neo4j版本版本:5.6.0

相关问题