2014-12-03 57 views
0

可能是一个愚蠢的问题,而是一个字符串,不能图出来: 节点的属性是:1-4567655Neo4j的:有一个查询,看起来像一个数学运算

我假设查询

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

失败原因neo4j计算1个减号4567655当然不匹配。如果这就是我该如何查询该属性的原因?我试过

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

但是这也不能完成这项工作。任何人有一个想法如何搜索这个?

谢谢!

回答

3

如果你这样做查询:

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

Neo4j的肯定做数学题,实际上以字符串-4567654(这是如果你做数学题,你会得到什么)结束。不,你直接指定一个常量字符串,其值是“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不是一回事。

试着改变你的查询来寻找数字(而不是字符串),我敢打赌这会有所帮助。

+0

太棒了。似乎我缺乏知识。当我尝试不带引号的查询时,票证是查找<< MATCH(t:Ticket {number:1-4567655})RETURN t >> - 现在可以使用。当我想查询另一个属性时像状态我仍然需要查询像<< MATCH(t:Ticket {status:“Closed”})RETURN t >>。数字的属性是不是一个字符串?如果是这样的话,我怎么定义这个属性是为了避免这种情况而创建一个字符串?我只是使用set t.number = csvLine [1]。也许我需要设置类型?感谢您的帮助,非常感谢。 – user3003715 2014-12-03 15:33:42

+0

当通过CSV导入时,如果你想保证这是一个字符串,只需使用toString()。 – FrobberOfBits 2014-12-03 16:36:05

相关问题