2016-07-25 31 views
0

我用neo4j建立了一个图。当我用下面的密码查询进行搜索时,它没有得到结果。neo4j密码查询不能使用属性

MATCH (n:node) 
where n.prop='pro1' 
RETURN n 
LIMIT 25 

我敢肯定n.prop='pro1'存在。查询起作用。

MATCH (n:node) 
where exists(n.prop) 
RETURN n 
LIMIT 25 

为什么第二个查询返回结果,但第一个查询不是?

+0

在这些类型的问题,是非常有用的做查询的比较(其中包括您的数据的假设)与实际数据。你能复制/粘贴你试图匹配的节点的数据吗? – InverseFalcon

回答

0

您可能需要进行一些健康检查,在这些情况下,常见的罪魁祸首是拼写错误,病例不匹配或类似情况。听起来你已经经历过这些,但回过头来验证每一个都没有什么坏处。

但如果它是如你所说,你的对手的标签是正确的,支撑键的情况下和拼写是正确的,那么它一定是断的东西与物业本身的价值。

有几件事情,寻找...

  • 更正拼写+案例
  • 中值的任何额外的空格会导致你的对手失败
  • 验证,如果在年底的性格“一”或小写字母“l”

,如果一切看起来还是不错,在Neo4j的再次测试......你可能想尝试在WHERE clau使用STARTS WITH SE。

作为最后的手段,尝试使用具有prop的节点MERGE作为你所期望的,但用ON CREATE在新节点上设置一些额外的标志,如果它被创建(就像一个完整性检查和所以你将有一些东西可以帮助你区分退出的节点和任何可以创建的新节点)。

+0

似乎'pro1'后面有一个空格。我重建图形,它的工作原理。谢谢! – Bing