Cypher:比较问题

时间:2013-09-18 11:53:41

标签: gwt types comparison neo4j cypher

我正在尝试对gwt上的no4j数据库执行cypher查询。

我将一些节点int存储为属性detail。如果我正确地使用neoclipe,我现在注意到,这些值作为String值存储在数据库中。

在我的查询中,我有以下部分不起作用:

START ... 
MATCH node-[:SomeTag]->intnode 
WHERE intnode.detail < 10
RETURN ...

我得到了:

  

不知道如何比较。左:15;右:10:不知道如何比较:左:15;右:10

所以intnode.detail < 10不起作用。我也试过这个:intnode.detail < STR(10),因为我认为它会比较哈希值或ascii值,但我得到了同样的错误。

修改

我读过,可以在存储数据的同时设置@GraphProperty,但我怎样才能在gwt中这样做?

我的意思是,如果我有一个节点,我可以,例如写

Object obj = (Object) 10;
node.setProperty("detail", obj);

我现在怎么告诉neo4j,obj是一个int?

2 个答案:

答案 0 :(得分:2)

这个答案主要集中在你的初步问题上 - 而不是你在编辑部分中添加的问题。

我刚才有一个类似的问题,在一个cypher查询的WHERE部分内进行了比较。我试着做一些像

这样的事情
MATCH ...
WHERE value > 1

导致与您的错误信息非常相似的错误消息。经过一些测试我发现查询有效,如果我添加单引号。这是我的解决方案

MATCH ...
WHERE value > '1'

(注意引号) 我也注意到,这不适用于双引号

我希望这有助于您和/或遇到此问题的任何其他人:)

答案 1 :(得分:0)

我认为intnode.detail值存储为字符串,因此您无法与整数值进行比较。

你必须这样做

开始...... MATCH节点 - [:SomeTag] - &gt; intnode WHERE intnode.detail&lt; “10” 返回...