neo4j:在查询中有一个看起来像数学运算的字符串

时间:2014-12-03 14:52:00

标签: neo4j cypher

可能是一个愚蠢的问题,但无法弄清楚: Node的属性是:1-4567655

我假设查询

MATCH (t:Ticket {number:"1-4567655"}) return t

失败导致neo4j计算1减4567655当然不匹配。如果这就是我怎么能查询该属性的原因?我试过例如

MATCH (t:Ticket {number:toString(1-556264051)}) RETURN t

但这也不起作用。任何人都知道如何搜索这个?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您执行此查询:

MATCH (t:Ticket {number:"1-4567655"}) return t

Neo4J绝对会进行数学运算,并最终得到字符串-4567654(如果你做了数学运算,这就是你得到的)。不,你真的指定了一个值为#34; 1-4567655"的常规字符串。因此,如果此查询没有返回任何内容,则最可能的原因是因为您没有Ticket节点具有该数字。

你可以在Neo4j中做简单的数学运算。查询RETURN 10-2为您提供答案8.当我运行return 1-556264051;时,我得到-556264050。使用toString就可以了。所以我再一次认为你的数据库实际上缺少一个Ticket节点,它有一个具有该值的数字属性。

number属性是否可能是不同类型(长或双)而不是字符串?

例如,我这样做了:

create (t:Ticket {number: 1});

如果您尝试将其与MATCH (t:Ticket { number: "1" }) return t匹配,则您什么也得不到。因为字符串"1"和数字1不是一回事。

尝试更改您的查询以查找数字(而非字符串),并且我打赌会帮助您。