触发cypher时EntityNotFoundException

时间:2013-06-07 11:56:04

标签: properties console neo4j nodes cypher

我是neo4j的新手,我真的需要帮助。

我创建了节点属性NAME,EMAIL和AGE。这些节点具有以下关系:IS_FRIEND_OF,其属性为SINCE与其他节点。

我在NAME中将属性值指定为“A”,“B”,“C”,“D”等。

现在当我在控制台中触发一个查询时:开始n = node(*)其中n.NAME ='A'返回n;

它给出了一个例外:EntityNotFoundException:Node [0]上不存在属性'NAME'

现在,如果我在节点[0]上添加属性NAME =“”然后触发相同的查询,它将提供正确的输出。对于小数据集,它可以工作,但对于较大的数据集,指定node [0]的每个属性似乎不是一个好的解决方案。

它是唯一的解决方法还是别的什么,可以更好地应用?

2 个答案:

答案 0 :(得分:1)

STARTn=node(*) WHERE n.NAME! = "A" RETURN n

感叹号将执行以下操作:

  

如果n.prop = value则为TRUE,如果n为NULL或n.prop不存在则为FALSE

答案 1 :(得分:1)

Cypher有两个特殊的运营商:在这种情况下用来处理此异常

使用?如果缺少n.prop,将评估为true:

START n=node(*) WHERE n.NAME? = "A" RETURN n

使用!如果缺少n.prop,将评估为false:

START n=node(*) WHERE n.NAME! = "A" RETURN n