今天,我尝试将Neo4j
更新为2.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.M03
和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,但无法注意到与此相关的任何变化。
谢谢!
答案 0 :(得分:1)
是的,这似乎是一个文档问题。看起来他们已删除了长LABEL
谓词形式。
看起来这样做的方法是:
WHERE node:myLabel:myLabel2
或
WHERE node:myLabel OR node:myLabel2
如果你真的需要像你正在做的那样比较一个数组,那么你的解决方法似乎是合理的。虽然使用node(*)
似乎不是有效查找标记节点的最佳方法。
如果您使用cypher legacy
作为密码查询的前缀,旧的解析器仍可访问,但它似乎也会从M05中删除。