0

今天,我尝试更新Neo4j2.0.0.M05. 运行我的应用程序测试后,我失败的是按(多个)标签过滤节点。

之前,我尝试过这样做(来源:http ://docs.neo4j.org/chunked/2.0.0-M05/query-where.html#where-filter-on-node-label ):

START node=node(*) WHERE node LABEL [:mylabel] RETURN node

您可以在此处看到失败并出现错误:http: //console-test.neo4j.org/r/irh886

作为一种解决方法,我使用了函数谓词并创建了查询:

START node=node(*) 
WHERE ANY (label in labels(node) WHERE label IN ['mylabel'])
RETURN node

这在2.0.0.M03and中有效2.0.0.M04,但在2.0.0.M05错误中无效,您可以在此处看到:http: //console-test.neo4j.org/r/scx0j4

2.0.0.M05更改日志中缺少我的任何重大更改?我一直在查看http://blog.neo4j.org/2013/09/neo4j-200m05-released.html,但没有注意到与此相关的任何变化。

谢谢!

4

1 回答 1

1

是的,这似乎是一个文档问题。看起来他们已经删除了长LABEL谓词形式。

看起来这样做的方法是:

WHERE node:myLabel:myLabel2

或者

WHERE node:myLabel OR node:myLabel2

如果您确实需要像您正在做的那样与数组进行比较,那么您的解决方法似乎是合理的。尽管使用node(*)似乎不是有效查找标记节点的最佳方法。

如果您在密码查询前加上前缀,旧的解析器仍然可以访问cypher legacy,但它似乎在 M05 中也已从那里删除。

于 2013-09-11T17:07:37.857 回答