Neo4J Cypher数据类型转换

Chr*_*isR 13 neo4j cypher

quantity在我们的Product-nodes 上有一个属性,我正在寻找一个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;
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ger 10

你可以反过来做.

MATCH (p:Product) WHERE p.quantity = str(20) RETURN p;
Run Code Online (Sandbox Code Playgroud)

也应该与params一起使用.

MATCH (p:Product) WHERE p.quantity = str({quantity}) RETURN p;
Run Code Online (Sandbox Code Playgroud)

甚至是内联属性匹配

MATCH (p:Product {quantity : str({quantity})}) RETURN p;
Run Code Online (Sandbox Code Playgroud)

  • 啊,这里是:http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-toint (2认同)

小智 8

MATCH (p:Product) WHERE toInt(p.quantity) = 20;
Run Code Online (Sandbox Code Playgroud)

  • 在你的答案中加入一些文字来解释你在做什么总是一个好主意。阅读 [如何写出好的答案](http://stackoverflow.com/help/how-to-answer)。 (2认同)