Neo4j 2.0.0.M05-标签对函数谓词的密码变化
今天,我尝试将Neo4j 2.0.0.M05-标签对函数谓词的密码变化,neo4j,cypher,Neo4j,Cypher,今天,我尝试将Neo4j更新为2.0.0.M05。在运行应用程序的测试之后,失败的是通过(多个)标签过滤节点 之前,我曾尝试使用(来源:): 失败并出现错误,您可以在此处看到: 作为解决方法,我使用了函数谓词并创建了查询: 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中不起作用,错
Neo4j
更新为2.0.0.M05
。在运行应用程序的测试之后,失败的是通过(多个)标签过滤节点
之前,我曾尝试使用(来源:):
失败并出现错误,您可以在此处看到:
作为解决方法,我使用了函数谓词并创建了查询:
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
中不起作用,错误如下:
2.0.0.M05
I在变更日志中缺少任何突破性的更改?我一直在看,但没有注意到与此相关的任何变化
谢谢 是的,这似乎是一个文档问题。看起来他们删除了长的
标签
谓词形式
这样做的方法似乎是:
WHERE node:myLabel:myLabel2
或
如果您确实需要像现在这样与数组进行比较,那么您的解决方案似乎是合理的。尽管使用节点(*)
似乎不是有效查找标记节点的最佳方法
如果您在密码查询前面加上
cypher legacy
,旧的解析器仍然可以访问,但在M05中它似乎也从那里删除了。Tnx!所以,如果我正确理解文档,node:myLabel:myLabel2意味着node必须同时具有两个标签,而不是这两个标签中的任何一个。此外,在M03中,我的变通方法的解析速度比第二个示例(node:myLabel或node:myLabel2)快得多,这就是我使用它而不是第二个示例的原因。节点(*)只是一个示例。在我的例子中,总是有一个节点ID列表,所以我总是有一个节点(1,2,3)。在你看来,这是一个错误,应该报告吗?我向neo的人提到了文档问题,他们会解决的。如果您认为某个性能问题很严重,请随时报告或查询的性能问题。(是的,第一个是标签谓词的
和
)嗯,对于一个bug,我的意思是函数谓词(我问题中的第二个示例)不起作用。对于可能的性能问题,我将研究它,并查看它在M05中的行为。
WHERE node:myLabel:myLabel2
WHERE node:myLabel OR node:myLabel2